2017-01-03 7 views
0

ユーザーがサインアップするときに電子メールをオプションで作成しようとしています。ここにはpackageがあります。だから私は、この機能でemail' => 'required|email|unique:users',を削除:Laravelで電子メールなしでユーザーを認証する

public function signup(Request $request) 
{ 
    $credentials = $request->all(); 
    $validator = Validator::make($credentials, [ 
     'name' => 'required', 
     'email' => 'required|email|unique:users', 
     'password' => 'required|min:6|confirmed', 
     'password_confirmation' => 'required|min:3' 
    ]); 
    if ($validator->fails()) { 
     throw new ValidationHttpException($validator->errors()->all()); 
    } 
    try { 
     $user = $this->users->create($request->except('roles', 'permissions')); 
     if (!$user->id) { 
      return $this->response->error('could_not_create_user', 500); 
     } 

     $hasToReleaseToken = Config::get('boilerplate.signup_token_release'); 
     if ($hasToReleaseToken) { 
      return $this->login($request); 

     } 

     return $this->response->created(); 
    } catch (\Exception $e) { 
     return $this->response->error($e->getMessage(), 500); 
    } 

} 

は、コンフィグ-boilerplate.phpに私はまた、電子メールを削除:

'signup_fields_rules' => [ 
    'name' => 'required', 
    'email' => 'required|email|unique:users',///// this 
    'password' => 'required|min:6' 
], 

しかし、私はサインアップするとき、私はこのエラーを取得:

"message": "未定義インデックス:email"、 "status_code":500、 "debug":{ "line":173、 "ファイル": "/ Users/MyMac /Desktop/Project/laravel-5.3-boilerplate-api-jwt-vue2/vendor/dingo/api/src/Http/Response/Factory.php」、 "クラス": "のSymfony \コンポーネント\ HttpKernel \例外\ HttpException" 、

ルート:

$api = app('Dingo\Api\Routing\Router'); 
$api->version('v1', function ($api) { 
$api->post('auth/signup', 'App\Api\V1\Controllers\[email protected]'); 

は、私は、ユーザーがサインアップメールの有無にかかわらずできるように無効にする必要はありますか?

+0

?基本的には、登録プロセスの後に、どのように認証する予定ですか? – kyle

+0

あなたSignupControllerがhttps://github.com/francescomalatesta/laravel-api-boilerplate-jwt/blob/master/app/Api/V1/Controllers/異なる – leo0019

+1

@kyle私はすでに電話番号にログイン方法を作成しましたSignUpController.php –

答えて

1

あなただけDocsを参照してくださいsometimes|emailを使用し、オプションフィールドとして電子メールを作成する場合。コードの下に試してみてください。

public function signup(Request $request) 
{ 
    $credentials = $request->all(); 
    $validator = Validator::make($credentials, [ 
     'name' => 'required', 
     'email' => 'sometimes|email', 
     'password' => 'required|min:6|confirmed', 
     'password_confirmation' => 'required|min:3' 
    ]); 
    if ($validator->fails()) { 
     throw new ValidationHttpException($validator->errors()->all()); 
    } 
    try { 
     $user = $this->users->create($request->except('roles', 'permissions')); 
     if (!$user->id) { 
      return $this->response->error('could_not_create_user', 500); 
     } 

     $hasToReleaseToken = Config::get('boilerplate.signup_token_release'); 
     if ($hasToReleaseToken) { 
      return $this->login($request); 

     } 

     return $this->response->created(); 
    } catch (\Exception $e) { 
     return $this->response->error($e->getMessage(), 500); 
    } 

} 

設定-boilerplate.phpただ、彼らは電子メールを持っていない場合はどのようにユーザーがログインする好奇心のうち

​​
関連する問題