Example #1
0
 /**
  * Creates a non-admin user.
  *
  * @param array $data
  *
  * @return \DreamFactory\Core\Models\User
  * @throws \DreamFactory\Core\Exceptions\ForbiddenException
  * @throws \DreamFactory\Core\Exceptions\InternalServerErrorException
  * @throws \Exception
  */
 public function create(array $data)
 {
     $userService = Service::getCachedByName('user');
     if (!$userService['config']['allow_open_registration']) {
         throw new ForbiddenException('Open Registration is not enabled.');
     }
     $openRegEmailSvcId = $userService['config']['open_reg_email_service_id'];
     $openRegEmailTplId = $userService['config']['open_reg_email_template_id'];
     $openRegRoleId = $userService['config']['open_reg_role_id'];
     /** @type User $user */
     $user = User::create($data);
     if (!empty($openRegEmailSvcId)) {
         $this->sendConfirmation($user, $openRegEmailSvcId, $openRegEmailTplId);
     } else {
         if (!empty($data['password'])) {
             $user->password = $data['password'];
             $user->save();
         }
     }
     if (!empty($openRegRoleId)) {
         User::applyDefaultUserAppRole($user, $openRegRoleId);
     }
     return $user;
 }
Example #2
0
 /**
  * If does not exists, creates a shadow LDap user using user info provided
  * by the Ldap service provider and assigns default role to this user
  * for all apps in the system. If user already exists then updates user's
  * role for all apps and returns it.
  *
  * @param LdapUserContract $ldapUser
  *
  * @return User
  * @throws \Exception
  */
 public function createShadowADLdapUser(LdapUserContract $ldapUser)
 {
     $email = $ldapUser->getEmail();
     $serviceName = $this->getName();
     if (empty($email)) {
         $uid = $ldapUser->getUid();
         if (empty($uid)) {
             $uid = str_replace(' ', '', $ldapUser->getName());
         }
         $domain = $ldapUser->getDomain();
         $email = $uid . '+' . $serviceName . '@' . $domain;
     } else {
         list($emailId, $domain) = explode('@', $email);
         $email = $emailId . '+' . $serviceName . '@' . $domain;
     }
     $user = User::whereEmail($email)->first();
     if (empty($user)) {
         $data = ['name' => $ldapUser->getName(), 'first_name' => $ldapUser->getFirstName(), 'last_name' => $ldapUser->getLastName(), 'email' => $email, 'is_active' => true, 'adldap' => $this->getProviderName(), 'password' => $ldapUser->getPassword()];
         $user = User::create($data);
     }
     $defaultRole = $this->getDefaultRole();
     User::applyDefaultUserAppRole($user, $defaultRole);
     return $user;
 }
Example #3
0
 /**
  * If does not exists, creates a shadow OAuth user using user info provided
  * by the OAuth service provider and assigns default role to this user
  * for all apps in the system. If user already exists then updates user's
  * role for all apps and returns it.
  *
  * @param OAuthUserContract $OAuthUser
  *
  * @return User
  * @throws \Exception
  */
 public function createShadowOAuthUser(OAuthUserContract $OAuthUser)
 {
     $fullName = $OAuthUser->getName();
     @(list($firstName, $lastName) = explode(' ', $fullName));
     $email = $OAuthUser->getEmail();
     $serviceName = $this->getName();
     $providerName = $this->getProviderName();
     $accessToken = $OAuthUser->token;
     if (empty($email)) {
         $email = $OAuthUser->getId() . '+' . $serviceName . '@' . $serviceName . '.com';
     } else {
         list($emailId, $domain) = explode('@', $email);
         $email = $emailId . '+' . $serviceName . '@' . $domain;
     }
     $user = User::whereEmail($email)->first();
     if (empty($user)) {
         $data = ['name' => $fullName, 'first_name' => $firstName, 'last_name' => $lastName, 'email' => $email, 'is_active' => true, 'oauth_provider' => $providerName, 'password' => $accessToken];
         $user = User::create($data);
     }
     $defaultRole = $this->getDefaultRole();
     User::applyDefaultUserAppRole($user, $defaultRole);
     return $user;
 }