Laravel 5.5:注册前执行方法 [英] Laravel 5.5: Execute a method before registration

查看:49
本文介绍了Laravel 5.5:注册前执行方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用默认的laravel身份验证.在我的网站上注册的每个用户都需要一个激活密码.有效PIN存储在其他表中.每当用户注册时,我都想测试PIN码是否有效.那么,在注册用户之前,我可以在RegisterController中重写任何可以执行的方法吗?

I'm using the default laravel authentication. Every user who registeres in my site needs a activation pin. The valid PINs are stored in a different table. Whenever a user registeres, I want to test if the PIN is valid or not. So, is there any method that I can override in RegisterController that executes before regstering the user?

推荐答案

是.您可以在RegisterController中重写受保护的寄存器方法.这是一个简单的解决方案.我这样做是为了验证参数,保存新用户并在我的一个项目中强制返回JSON.

Yes. You can override protected register method in RegisterController. This is a simple solution. I do this to validate params, save a new user, and force return JSON in one of my projects.

例如:

protected function register(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'first_name' => 'required',
            'last_name' => 'required',
            'email' => 'required|email|unique:users',
            'phone' => 'required',
            'pin' => 'required'
        ]);

        //Check your PIN here, if it's wrong, append errors array

        if ($validator->fails())
            throw new ValidationFailed($validator->errors());

        User::create([
            'first_name' => $request->input('first_name'),
            'last_name' => $request->input('last_name'),
            'email' => $request->input('email'),
            'phone' => $request->input('phone'),
            'password' => bcrypt(str_random(10)),
            'remember_token' => str_random(10),
        ]);

        return ResponseJSON::make(trans('responses.registered'));
    }

这篇关于Laravel 5.5:注册前执行方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆