2017-01-03 4 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»: «Undefined index: email», «status_code»: 500, «debug»: { "line": 173, "file": "/ Users/MyMac /Desktop/Project/laravel-5.3-boilerplate-api-jwt-vue2/vendor/dingo/api/src/Http/Response/Factory.php ", " класс ":" Symfony \ Component \ HttpKernel \ Exception \ 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

Я уже создал метод входа с номером телефона @kyle – leo0019

+1

Ваш аккаунт для регистрации отличается от https://github.com/francescomalatesta/laravel-api-boilerplate-jwt/blob/master/app/Api/V1/Controllers/ SignUpController.php –

ответ

1

Если вы хотите сделать электронное письмо в качестве дополнительного поля, просто используйте sometimes|email См. Docs. Попробуйте ниже код:

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

'signup_fields_rules' => [ 
    'name' => 'required', 
    'email' => 'sometimes|email',///// this 
    'password' => 'required|min:6' 
], 
Смежные вопросы