Registrar.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php namespace App\Services;
  2. use App\Models\User;
  3. use App\Models\UserData;
  4. use Carbon\Carbon;
  5. use Validator;
  6. use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
  7. class Registrar implements RegistrarContract {
  8. /**
  9. * Get a validator for an incoming registration request.
  10. *
  11. * @param array $data
  12. * @return \Illuminate\Contracts\Validation\Validator
  13. */
  14. public function validator(array $data)
  15. {
  16. return Validator::make($data, [
  17. 'name' => 'required|max:100',
  18. 'password' => 'required|confirmed|min:6',
  19. ]);
  20. }
  21. /**
  22. * Create a new user instance after a valid registration.
  23. *
  24. * @param array $data
  25. * @return User
  26. */
  27. public function create(array $data)
  28. {
  29. $data['password'] = bcrypt($data['password']);
  30. $data['site_notifications'] = 'follow_user,invite_answer,comment_question,comment_article,adopt_answer,comment_answer,reply_comment';
  31. $data['email_notifications'] = 'adopt_answer,invite_answer';
  32. $user = User::create($data);
  33. if($user){
  34. $userData = [
  35. 'user_id' => $user->id,
  36. 'coins' => 0,
  37. 'credits' => 20,
  38. 'registered_at' => Carbon::now(),
  39. 'last_visit' => Carbon::now(),
  40. 'last_login_ip' => $data['visit_ip'],
  41. ];
  42. if( $user->mobile ){
  43. $userData['mobile_status'] = 1;
  44. }
  45. UserData::create($userData);
  46. }
  47. return $user;
  48. }
  49. }