Xpressengine\User\UserHandler::create PHP Method

create() public method

주어진 정보로 신규회원을 등록한다. 회원정보에 대한 유효성검사도 병행하며, 회원관련 정보(그룹, 이메일, 등록대기 이메일, 계정)도 동시에 추가한다.
public create ( array $data ) : Xpressengine\User\UserInterface
$data array 신규회원 정보
return Xpressengine\User\UserInterface 신규 등록된 회원정보
    public function create(array $data)
    {
        $this->validateForCreate($data);
        /* 회원가입 절차 */
        $userData = array_except($data, ['emailConfirmed', 'groupId', 'password_confirmation', 'account']);
        // insert user
        if (array_has($userData, 'password')) {
            $userData['password'] = $this->hasher->make($userData['password']);
        }
        $user = $this->users()->create($userData);
        // insert mail
        if (isset($userData['email'])) {
            $mailData = ['userId' => $user->id, 'address' => $user->email];
            if ($this->useEmailConfirm === false || array_get($data, 'emailConfirmed', false)) {
                $mail = $this->emails()->create($user, $mailData);
            } else {
                $mail = $this->pendingEmails()->create($user, $mailData);
            }
        }
        // join group
        $groupIds = array_get($data, 'groupId', []);
        if (count($groupIds) > 0) {
            $user->joinGroups($groupIds);
        }
        // insert accounts
        if (isset($data['account'])) {
            $accountData = $data['account'];
            $account = $this->accounts()->create($user, ['userId' => $user->id, 'accountId' => array_get($accountData, 'accountId'), 'email' => array_get($accountData, 'email', array_get($data, 'email')), 'provider' => array_get($accountData, 'provider'), 'data' => array_get($accountData, 'data'), 'token' => array_get($accountData, 'token')]);
            $user->accounts()->save($account);
        }
        return $user;
    }

Usage Example

Example #1
0
 /**
  * store user
  *
  * @param Request $request
  *
  * @return \Illuminate\Http\RedirectResponse
  * @throws Exception
  */
 public function store(Request $request)
 {
     $this->validate($request, ['email' => 'email|required', 'displayName' => 'required', 'password' => 'required|password']);
     $userData = $request->except('_token');
     $userData['emailConfirmed'] = 1;
     XeDB::beginTransaction();
     try {
         $this->handler->create($userData);
     } catch (\Exception $e) {
         XeDB::rollback();
         throw $e;
     }
     XeDB::commit();
     return redirect()->route('settings.member.index')->with('alert', ['type' => 'success', 'message' => '추가되었습니다.']);
 }
All Usage Examples Of Xpressengine\User\UserHandler::create