PHP Class Xpressengine\User\UserHandler
UserHandler는
XeUser 파사드를 통해 쉽게 사용할 수 있습니다.
## 회원 조회
회원 정보를 조회할 때에는
UserRepository를 사용하십시오.
UserRepository는 UserHandler를 통하여 가져올 수 있습니다.
$userRepository = XeUser::users();
> UserRepository는 laravel의 Eloquent 모델의 사용법을 대부분 그대로 사용할 수 있습니다.
laravel Eloquent 모델의 사용법은
라라벨 문서를 참조하십시오.
### 회원아이디로 회원조회
회원 아이디로 회원 조회할 때에는
find 메소드를 사용하십시오.
php
$user = XeUser::users()->find($id);
$username = $user->getDisplayName();
여러 회원을 조회할 수도 있습니다.
php
$ids = [1,2,3];
$users = XeUser::users()->find($ids);
foreach($users as $user) {
...
}
### 회원 정보로 회원조회
다양하고 복잡한 조건으로 회원을 조회할 수도 있습니다. 자세한 사용법은
라라벨 문서를 참조하십시오.
php
displayName이 foo인 회원 조회
$user = XeUser::users()->where('displayName', 'foo')->first();
php
displayName이 foo로 시작하는 모든 회원 조회
$user = XeUser::users()->where('displayName', 'like', '%foo')->get();
## 신규 회원 추가
UserHandler는 복잡한 회원 생성 과정을 한번에 처리해주는
create 메소드를 제공합니다.
create 메소드는 입력한 신규회원 정보에 대한 유효성 검사후 신규회원을 생성합니다.
또한 회원의 계정(account), 이메일(email) 정보도 자동으로 추가되며, 소솔될 그룹에 대한 정보가 전달되었을 경우, 그룹에 추가시켜주기도 합니다.
php
$data = [
'displayName' => 'foo',
'email' => '[email protected]',
...
];
$newUser = XeUser::create($data);
신규 회원의 계정(account) 정보를 같이 등록할 수도 있습니다.
php
$data = [
'displayName' => 'foo',
'email' => '[email protected]',
...
]
$data['account'] = [
'provider' => 'facebook',
'token' => '3DIfdkwwfdsie...',
'id' => 'id of facebook user',
'data' => '...'
]
$newUser = XeUser::create($data);
신규회원이 소속될 회원그룹을 지정할 수도 있습니다.
php
$data = [
'displayName' => 'foo',
'email' => '[email protected]',
'groupId' => [21,23] // 그룹아이디가 21, 23인 그룹에 회원을 소속시킴
]
$newUser = XeUser::create($data);
만약 유효성검사 및 관련 정보(account, email, group) 등록을 하지않고 신규회원 정보만 추가하고싶다면 UserRepository를 사용하십시오.
php
$data = [
'displayName' => 'foo',
'email' => '[email protected]',
'password' => '...'
]
$newUser = XeUser::users()->create($data);
>
주의! UserRepository의
create 메소드는
password를 암호화하지 않고 바로 저장합니다.
먼저
password 필드를 직접 암호화하십시오.
## 회원정보 수정
update 메소드를 사용하면 회원정보를 변경할 수 있습니다. 유효성 검사 및 프로필 이미지 처리, 소속그룹 변경도 동시에 처리합니다.
$user = XeUser::find(20);
XeUser::update($user, ['displayName' => 'bar']);
## 회원삭제
leave 메소드를 사용하면 특정 회원을 탈퇴시킬 수 있습니다.
leave 메소드를 사용하면
탈퇴시킬 회원의 관련정보(account, email)도 같이 삭제됩니다.
php
$ids = [12,23,34];
XeUser::leave($ids); // 3명의 회원을 탈퇴시킴
UserRepository의
delete 메소드를 사용하여 회원을 삭제할 수도 있습니다. 단, 이 메소드를 사용하면 삭제될 회원과 관련된 정보는 함께 삭제되지 않습니다.
php
$user = XeUser::find(12);
XeUser::delete($user);
## 회원과 관련된 정보의 조회 및 처리
회원계정(account), 회원이메일(email), 회원 승인대기 이메일(pending email), 회원그룹(group)과 같은
회원과 관련된 정보도 UserHandler를 사용하여 조회하고 처리할 수 있습니다.
회원과 관련된 정보에 대한 생성(create), 삭제(delete), 업데이트(update) 기능은 UserHandler에서 직접 제공합니다.
단, 회원과 관련된 정보에 대한 조회(retrieve) 기능은 각각의 Repository를 통해 실행해야 합니다.
UserHandler에서 제공하는 생성(create), 삭제(delete), 업데이트(update) 기능은 아래 코드를 참고하십시오.
php
그룹정보 생성/수정/삭제
$groupData = [
'name' => '정회원',
'description' => '기본회원',
];
$group = XeUser::createGroup($groupData);
XeUser::updateGroup($group, ['name' => '기본회원']);
XeUser::deleteGroup($group);
이메일정보 생성/수정/삭제
$user = XeUser::find('123');
$data = [
'address' => '[email protected]'
];
$confirmed = true; // 승인|승인대기 이메일 구분
$email = XeUser::createEmail($user, $data, $confirmed);
XeUser::updateEmail($email, ['address' => '[email protected]']);
XeUser::deleteEmail($email);
계정정보 생성/수정/삭제
$data = [
'provider' => 'facebook',
....
]
$account = XeUser::createAccount($user, array $data);
XeUser::updateAccount($account, ['data'=>'...']);
XeUser::deleteAccount($account);
### 회원계정(account)
XE에서 각각의 회원(user)는 여러개의 외부 계정을 가질 수 있습니다.
만약 한 회원이 facebook, google, naver 등 여러개의 외부 계정을 소유하고 있다면, 소유한 계정중 하나를 이용하여 로그인할 수 있습니다.
회원계정을 조회할 때에는 UserAccountRepository를 사용하십시오.
UserAccountRepository는 UserHandler를 통하여 가져올 수 있습니다.
php
$accountRepository = XeUser::accounts();
한 회원이 소유한 계정 목록을 조회할 수 있습니다.
php
회원계정아이디로 회원계정정보 조회
$userId = '123';
$accounts = XeUser::accounts()->findByUserId($accountId);
위 코드는 아래 코드로 대체할 수도 있습니다.
php
$user = XeUser::users()->find('123');
$accounts = $user->accounts;
> UserAccountRepository는 laravel의 Eloquent 모델의 사용법을 대부분 그대로 사용할 수 있습니다.
laravel Eloquent 모델의 사용법은
라라벨 문서를 참조하십시오.
### 회원 이메일(email)
XE에서 각각의 회원은 여러개의 이메일을 가질 수 있습니다.
만약 한 회원이 여러개의 이메일을 소유하고 있다면, 소유한 이메일 중 하나와 비밀번호를 사용하여 로그인 할 수 있습니다.
회원의 이메일을 조회할 때에는 UserEmailRepository를 사용하십시오.
UserEmailRepository는 UserHandler를 통하여 가져올 수 있습니다.
php
$emailRepository = XeUser::emails();
이메일 주소를 사용하여 이메일정보 조회할 수 있습니다.
php
$email = XeUser::emails()->findByAddress('[email protected]');
### 승인 대기중인 이메일(pending email)
회원이 소유한 이메일은 승인된 이메일과 승인 대기중인 이메일로 구분됩니다.
승인된 이메일(email)과 승인대기 이메일(pendingEmail)은 별도의 테이블에 저장됩니다.
승인된 이메일은 한 회원이 여러개 가질 수 있지만, 승인대기 이메일은 한 회원당 하나만 가질 수 있습니다.
승인대기 이메일 주소로는 로그인을 할 수 없습니다.
회원의 승인대기 이메일을 조회할 때에는 PendingEmailRepository를 사용하십시오.
PendingEmailRepository는 UserHandler를 통하여 가져올 수 있습니다.
php
$pendingEmailRepository = XeUser::pendingEmails();
php
$pendingEmail = XeUser::pendingEmails()->findByUserId('123');
Afficher le fichier
Open project: xpressengine/xpressengine
Class Usage Examples
Méthodes publiques
Свойство |
Type |
Description |
|
$status |
|
회원이 가질 수 있는 상태 목록 |
|
Protected Properties
Méthodes publiques
Méthode |
Description |
|
__call ( string $method, array $parameters ) : mixed |
__call |
|
__construct ( Xpressengine\User\Repositories\UserRepositoryInterface $users, Xpressengine\User\Repositories\UserAccountRepositoryInterface $accounts, Xpressengine\User\Repositories\UserGroupRepositoryInterface $groups, Xpressengine\User\Repositories\UserEmailRepositoryInterface $mails, Xpressengine\User\Repositories\PendingEmailRepositoryInterface $pendingEmails, UserImageHandler $imageHandler, Illuminate\Contracts\Hashing\Hasher $hasher, Illuminate\Contracts\Validation\Factory $validator, Container $container, boolean $useEmailConfirm ) |
constructor. |
|
accounts ( ) : Xpressengine\User\Repositories\UserAccountRepositoryInterface |
UserAccount 회원계정 저장소를 반환한다. |
|
create ( array $data ) : Xpressengine\User\UserInterface |
주어진 정보로 신규회원을 등록한다. 회원정보에 대한 유효성검사도 병행하며, 회원관련 정보(그룹, 이메일, 등록대기 이메일, 계정)도 동시에 추가한다. |
|
createAccount ( Xpressengine\User\UserInterface $user, array $data ) : void |
새로운 계정을 추가한다. |
|
createEmail ( Xpressengine\User\UserInterface $user, array $data, boolean $confirmed = true ) : Xpressengine\User\EmailInterface |
새로운 이메일을 생성한다 |
|
createGroup ( array $data ) : Xpressengine\User\GroupInterface |
새로운 그룹을 추가한다. |
|
deleteAccount ( string $account ) : void |
계정을 삭제한다 |
|
deleteEmail ( Xpressengine\User\EmailInterface $email ) : boolean |
이메일을 삭제한다 |
|
deleteGroup ( Xpressengine\User\GroupInterface $group ) : boolean |
그룹을 삭제한다 |
|
emails ( ) : Xpressengine\User\Repositories\UserEmailRepositoryInterface |
회원 이메일 저장소를 반환한다. |
|
getSettingsSections ( ) : array |
개인 회원정보 설정 페이지의 섹션 목록을 반환한다. |
|
groups ( ) : Xpressengine\User\Repositories\UserGroupRepositoryInterface |
UserGroup 그룹 저장소를 반환한다. |
|
leave ( string | string[] $userIds ) : void |
회원탈퇴 처리를 한다. 회원관련 정보(그룹, 이메일, 등록대기 이메일, 계정)도 동시에 삭제한다. |
|
pendingEmails ( ) : Xpressengine\User\Repositories\PendingEmailRepositoryInterface |
회원 등록대기 이메일 저장소를 반환한다. |
|
update ( Xpressengine\User\UserInterface $user, array $userData ) : Xpressengine\User\UserInterface |
회원정보를 업데이트 한다. |
|
updateAccount ( Xpressengine\User\AccountInterface $account, array $data = [] ) : Xpressengine\User\AccountInterface |
계정을 수정한다 |
|
updateEmail ( Xpressengine\User\EmailInterface $email, array $data = [] ) : Xpressengine\User\EmailInterface |
이메일을 수정한다 |
|
updateGroup ( Xpressengine\User\GroupInterface $group, array $data = [] ) : Xpressengine\User\GroupInterface |
그룹을 수정한다 |
|
users ( ) : Xpressengine\User\Repositories\UserRepositoryInterface |
User 회원 저장소를 반환한다. |
|
usingEmailConfirm ( ) : boolean |
이메일 인증의 사용 여부를 반환한다. |
|
validateDisplayName ( string $name ) : boolean |
표시이름(displayName)에 대한 유효성 검사를 한다. 표시이름이 형식검사와 중복검사를 병행한다. |
|
validateForCreate ( array $data ) : boolean |
신규회원의 정보를 유효성 검사한다. |
|
validateForUpdate ( Xpressengine\User\UserInterface $user, array $data ) : boolean |
회원의 정보를 업데이트할 때 필요한 유효성 검사를 한다. |
|
validatePassword ( string $password ) : boolean |
비밀번호에 대한 유효성 검사를 한다. |
|
Method Details
__construct()
public méthode
public __construct ( Xpressengine\User\Repositories\UserRepositoryInterface $users, Xpressengine\User\Repositories\UserAccountRepositoryInterface $accounts, Xpressengine\User\Repositories\UserGroupRepositoryInterface $groups, Xpressengine\User\Repositories\UserEmailRepositoryInterface $mails, Xpressengine\User\Repositories\PendingEmailRepositoryInterface $pendingEmails, UserImageHandler $imageHandler, Illuminate\Contracts\Hashing\Hasher $hasher, Illuminate\Contracts\Validation\Factory $validator, Container $container, boolean $useEmailConfirm ) |
$users |
Xpressengine\User\Repositories\UserRepositoryInterface |
User 회원 저장소 |
$accounts |
Xpressengine\User\Repositories\UserAccountRepositoryInterface |
UserAccount 회원계정 저장소 |
$groups |
Xpressengine\User\Repositories\UserGroupRepositoryInterface |
UserGroup 그룹 저장소 |
$mails |
Xpressengine\User\Repositories\UserEmailRepositoryInterface |
회원 이메일 저장소 |
$pendingEmails |
Xpressengine\User\Repositories\PendingEmailRepositoryInterface |
회원 등록대기 이메일 저장소 |
$imageHandler |
UserImageHandler |
image handler |
$hasher |
Illuminate\Contracts\Hashing\Hasher |
해시코드 생성기, 비밀번호 해싱을 위해 사용됨 |
$validator |
Illuminate\Contracts\Validation\Factory |
유효성 검사기. 비밀번호 및 표시이름(dispalyName)의 유효성 검사를 위해 사용됨 |
$container |
Xpressengine\Register\Container |
Xpressengine 레지스터 |
$useEmailConfirm |
boolean |
이메일 인증의 사용여부 |
accounts()
public méthode
UserAccount 회원계정 저장소를 반환한다.
public accounts ( ) : Xpressengine\User\Repositories\UserAccountRepositoryInterface |
Résultat |
Xpressengine\User\Repositories\UserAccountRepositoryInterface |
|
주어진 정보로 신규회원을 등록한다. 회원정보에 대한 유효성검사도 병행하며, 회원관련 정보(그룹, 이메일, 등록대기 이메일, 계정)도 동시에 추가한다.
public create ( array $data ) : Xpressengine\User\UserInterface |
$data |
array |
신규회원 정보 |
Résultat |
Xpressengine\User\UserInterface |
신규 등록된 회원정보 |
createAccount()
public méthode
public createAccount ( Xpressengine\User\UserInterface $user, array $data ) : void |
$user |
Xpressengine\User\UserInterface |
user |
$data |
array |
data |
Résultat |
void |
|
createEmail()
public méthode
public createEmail ( Xpressengine\User\UserInterface $user, array $data, boolean $confirmed = true ) : Xpressengine\User\EmailInterface |
$user |
Xpressengine\User\UserInterface |
user |
$data |
array |
data |
$confirmed |
boolean |
confirmed |
Résultat |
Xpressengine\User\EmailInterface |
|
createGroup()
public méthode
public createGroup ( array $data ) : Xpressengine\User\GroupInterface |
$data |
array |
data |
Résultat |
Xpressengine\User\GroupInterface |
|
deleteAccount()
public méthode
deleteEmail()
public méthode
public deleteEmail ( Xpressengine\User\EmailInterface $email ) : boolean |
$email |
Xpressengine\User\EmailInterface |
email |
Résultat |
boolean |
|
deleteGroup()
public méthode
public deleteGroup ( Xpressengine\User\GroupInterface $group ) : boolean |
$group |
Xpressengine\User\GroupInterface |
group |
Résultat |
boolean |
|
public emails ( ) : Xpressengine\User\Repositories\UserEmailRepositoryInterface |
Résultat |
Xpressengine\User\Repositories\UserEmailRepositoryInterface |
|
getSettingsSections()
public méthode
개인 회원정보 설정 페이지는 여러개의 섹션(메뉴)로 구성된다.
기본적으로 Xpressengien은 '회원 기본정보 설정' 섹션이 가지고 있고,
다른 서드파티에서 자유롭게 섹션을 추가할 수 있다. 예) 소셜로그인 플러그인의 '외부 로그인 설정' 섹션
이 메소드는 이렇게 등록된 섹션 목록을 반환한다.
public groups ( ) : Xpressengine\User\Repositories\UserGroupRepositoryInterface |
Résultat |
Xpressengine\User\Repositories\UserGroupRepositoryInterface |
|
회원탈퇴 처리를 한다. 회원관련 정보(그룹, 이메일, 등록대기 이메일, 계정)도 동시에 삭제한다.
pendingEmails()
public méthode
public pendingEmails ( ) : Xpressengine\User\Repositories\PendingEmailRepositoryInterface |
Résultat |
Xpressengine\User\Repositories\PendingEmailRepositoryInterface |
|
필드: email, displayName, password, status, introduction, profileImgFile, groupId
public update ( Xpressengine\User\UserInterface $user, array $userData ) : Xpressengine\User\UserInterface |
$user |
Xpressengine\User\UserInterface |
user |
$userData |
array |
user data |
Résultat |
Xpressengine\User\UserInterface |
|
updateAccount()
public méthode
public updateAccount ( Xpressengine\User\AccountInterface $account, array $data = [] ) : Xpressengine\User\AccountInterface |
$account |
Xpressengine\User\AccountInterface |
account |
$data |
array |
data |
Résultat |
Xpressengine\User\AccountInterface |
|
updateEmail()
public méthode
public updateEmail ( Xpressengine\User\EmailInterface $email, array $data = [] ) : Xpressengine\User\EmailInterface |
$email |
Xpressengine\User\EmailInterface |
email |
$data |
array |
data |
Résultat |
Xpressengine\User\EmailInterface |
|
updateGroup()
public méthode
public updateGroup ( Xpressengine\User\GroupInterface $group, array $data = [] ) : Xpressengine\User\GroupInterface |
$group |
Xpressengine\User\GroupInterface |
group |
$data |
array |
data |
Résultat |
Xpressengine\User\GroupInterface |
|
public users ( ) : Xpressengine\User\Repositories\UserRepositoryInterface |
Résultat |
Xpressengine\User\Repositories\UserRepositoryInterface |
|
usingEmailConfirm()
public méthode
validateDisplayName()
public méthode
표시이름(displayName)에 대한 유효성 검사를 한다. 표시이름이 형식검사와 중복검사를 병행한다.
validateForCreate()
public méthode
validateForUpdate()
public méthode
회원의 정보를 업데이트할 때 필요한 유효성 검사를 한다.
validatePassword()
public méthode
Property Details
$accounts protected_oe property
$container protected_oe property
$emails protected_oe property
$groups protected_oe property
$hasher protected_oe property
해시코드 생성기, 비밀번호 해싱을 위해 사용됨
$settingsSections protected_oe property
protected $settingsSections |
$status public_oe static_oe property
$users protected_oe property