我是拉雷维尔的诺布,和拉雷维尔5号一起工作.对于用户注册和登录,我想使用laravel的默认系统.但是,需要通过以下两个功能对其进行扩展:

  1. 用户注册后会收到一封邮箱.
  2. 保存用户注册后,我需要在另一个角色表中创建一个条目(我使用了委托包进行角色管理)

How to do these things?

推荐答案

You can modify Laravel 5 default registrar located in app/services

<?php namespace App\Services;

    use App\User;
    use Validator;
    use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
    use Mail;

    class Registrar implements RegistrarContract {

        /**
         * Get a validator for an incoming registration request.
         *
         * @param  array  $data
         * @return \Illuminate\Contracts\Validation\Validator
         */
        public function validator(array $data)
        {
            return Validator::make($data, [
                'name' => 'required|max:255',
                'email' => 'required|email|max:255|unique:users',
                'password' => 'required|confirmed|min:6'
            ]);
        }

        /**
         * Create a new user instance after a valid registration.
         *
         * @param  array  $data
         * @return User
         */
        public function create(array $data)
        {
            $user = User::create([
                'name' => $data['name'],
                'email' => $data['email'],
                'password' => \Hash::make($data['password']),
                //generates a random string that is 20 characters long
                'verification_code' => str_random(20)
            ]);

//do your role stuffs here

            //send verification mail to user
            //---------------------------------------------------------
            $data['verification_code']  = $user->verification_code;

            Mail::send('emails.welcome', $data, function($message) use ($data)
            {
                $message->from('no-reply@site.com', "Site name");
                $message->subject("Welcome to site name");
                $message->to($data['email']);
            });


            return $user;
        }

    }

resources/emails/welcome.blade.php以内

Hey {{$name}}, Welcome to our website. <br>
Please click <a href="{!! url('/verify', ['code'=>$verification_code]) !!}"> Here</a> to confirm email

注意:您需要为验证创建路由/控制器

Laravel相关问答推荐

为什么只删除了最后一个Like,而没有删除选中的?

Livewire 3软件包开发

Laravel 通过 API 嵌套 url 发布

如何通过单击进入 vs 代码中的类

如何使用 Laravel 查询生成器在 WHERE 条件周围添加括号

在 Laravel 5 中添加新配置文件不起作用

带有 Laravel Passport 的 SSO

路由中间的可选参数

函数 mcrypt_get_iv_size() 在 Laravel 4 上已弃用

Laravel Input:all() 忽略禁用的输入

Laravel 5.1 重命名项目

当表中不存在列时如何将 paginate() 与 having() 子句一起使用

干预图像:直接从带有原始文件名和分机的网址保存图像?

禁用Eager的关系

Laravel 迁移命名约定

改变模式生成器中的列长度?

将 Laravel 集合排序为 ID 数组

Carbon解析到 ISO8601

如何在 Laravel 测试中禁用选定的中间件

为什么 phpunit 没有得到 phpunit.xml 中指定的正确 APP_ENV?