183 lines
6.3 KiB
PHP
183 lines
6.3 KiB
PHP
<?php namespace App\libs\Auth\Factories;
|
|
/**
|
|
* Copyright 2019 OpenStack Foundation
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
**/
|
|
use Auth\Group;
|
|
use Auth\User;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
/**
|
|
* Class UserFactory
|
|
* @package App\libs\Auth\Factories
|
|
*/
|
|
final class UserFactory
|
|
{
|
|
/**
|
|
* @param array $payload
|
|
* @return User
|
|
*/
|
|
public static function build(array $payload):User{
|
|
$user = self::populate(new User, $payload);
|
|
// set the created by user
|
|
$current_user = Auth::user();
|
|
if(!is_null($current_user) && $current_user->isSuperAdmin()){
|
|
$user->setCreatedBy($current_user);
|
|
}
|
|
return $user;
|
|
}
|
|
|
|
/**
|
|
* @param User $user
|
|
* @param array $payload
|
|
* @return User
|
|
*/
|
|
public static function populate(User $user, array $payload):User{
|
|
|
|
if(isset($payload['first_name']))
|
|
$user->setFirstName(trim($payload['first_name']));
|
|
if(isset($payload['last_name']))
|
|
$user->setLastName(trim($payload['last_name']));
|
|
|
|
if(isset($payload['email']) && !empty($payload['email']))
|
|
$user->setEmail(strtolower(trim($payload['email'])));
|
|
|
|
if(isset($payload['second_email']))
|
|
$user->setSecondEmail(strtolower(trim($payload['second_email'])));
|
|
|
|
if(isset($payload['third_email']))
|
|
$user->setThirdEmail(strtolower(trim($payload['third_email'])));
|
|
|
|
if(isset($payload['bio']))
|
|
$user->setBio(trim($payload['bio']));
|
|
|
|
if(isset($payload['identifier']) && !empty($payload['identifier']))
|
|
$user->setIdentifier(trim($payload['identifier']));
|
|
|
|
if(isset($payload['statement_of_interest']))
|
|
$user->setStatementOfInterest(trim($payload['statement_of_interest']));
|
|
|
|
if(isset($payload['irc']))
|
|
$user->setIrc(trim($payload['irc']));
|
|
|
|
if(isset($payload['github_user']))
|
|
$user->setGithubUser(trim($payload['github_user']));
|
|
|
|
if(isset($payload['twitter_name']))
|
|
$user->setTwitterName(trim($payload['twitter_name']));
|
|
|
|
if(isset($payload['wechat_user']))
|
|
$user->setWechatUser(trim($payload['wechat_user']));
|
|
|
|
if(isset($payload['linked_in_profile']))
|
|
$user->setLinkedInProfile(trim($payload['linked_in_profile']));
|
|
|
|
if(isset($payload['birthday'])){
|
|
if(!empty($payload['birthday'])) {
|
|
$birthday = $payload['birthday'];
|
|
if (is_int($birthday)) {
|
|
$birthday = new \DateTime("@$birthday");
|
|
}
|
|
$birthday->setTime(0, 0, 0);
|
|
$user->setBirthday($birthday);
|
|
}
|
|
else{
|
|
$user->setBirthday(null);
|
|
}
|
|
}
|
|
|
|
if(isset($payload['password_enc']) && !empty($payload['password_enc'])) {
|
|
$user->setPasswordEnc(trim($payload['password_enc']));
|
|
}
|
|
|
|
if(isset($payload['password']) && !empty($payload['password'])) {
|
|
$user->setPassword(trim($payload['password']));
|
|
}
|
|
|
|
if(isset($payload['gender']))
|
|
$user->setGender(trim($payload['gender']));
|
|
|
|
if(isset($payload['gender_specify']))
|
|
$user->setGenderSpecify(trim($payload['gender_specify']));
|
|
|
|
if(isset($payload['address1']))
|
|
$user->setAddress1(trim($payload['address1']));
|
|
|
|
if(isset($payload['address2']))
|
|
$user->setAddress2(trim($payload['address2']));
|
|
|
|
if(isset($payload['city']))
|
|
$user->setCity(trim($payload['city']));
|
|
|
|
if(isset($payload['state']))
|
|
$user->setState(trim($payload['state']));
|
|
|
|
if(isset($payload['phone_number']))
|
|
$user->setPhoneNumber(trim($payload['phone_number']));
|
|
|
|
if(isset($payload['company']))
|
|
$user->setCompany(trim($payload['company']));
|
|
|
|
if(isset($payload['job_title']))
|
|
$user->setJobTitle(trim($payload['job_title']));
|
|
|
|
if(isset($payload['post_code']))
|
|
$user->setPostCode(trim($payload['post_code']));
|
|
|
|
if(isset($payload['country_iso_code']))
|
|
$user->setCountryIsoCode(trim($payload['country_iso_code']));
|
|
|
|
if(isset($payload['language']))
|
|
$user->setLanguage(trim($payload['language']));
|
|
|
|
if(isset($payload['groups'])){
|
|
foreach($payload['groups'] as $group){
|
|
if(!$group instanceof Group) continue;
|
|
$user->addToGroup($group);
|
|
}
|
|
}
|
|
|
|
if(isset($payload['active'])) {
|
|
$active = boolval($payload['active']);
|
|
if($active)
|
|
$user->activate();
|
|
else
|
|
$user->deActivate();
|
|
}
|
|
|
|
if(isset($payload['public_profile_show_photo']))
|
|
$user->setPublicProfileShowPhoto(boolval($payload['public_profile_show_photo']));
|
|
|
|
if(isset($payload['public_profile_show_fullname']))
|
|
$user->setPublicProfileShowFullname(boolval($payload['public_profile_show_fullname']));
|
|
|
|
if(isset($payload['public_profile_show_email']))
|
|
$user->setPublicProfileShowEmail(boolval($payload['public_profile_show_email']));
|
|
|
|
if(isset($payload['email_verified']) && boolval($payload['email_verified']) === true && !$user->isEmailVerified())
|
|
$user->verifyEmail();
|
|
|
|
if(isset($payload['full_name']))
|
|
$user->setFullName(trim($payload['full_name']));
|
|
|
|
if(isset($payload['external_id']))
|
|
$user->setExternalId(trim($payload['external_id']));
|
|
|
|
if(isset($payload['external_pic']))
|
|
$user->setExternalPic(trim($payload['external_pic']));
|
|
|
|
if(isset($payload['external_provider']))
|
|
$user->setExternalProvider(trim($payload['external_provider']));
|
|
|
|
return $user;
|
|
}
|
|
} |