예제 #1
0
 /**
  * @group entity
  * @group Userentity
  */
 public function testUpdatePassword()
 {
     $user = zbase_entity('user')->repository()->by('username', 'adminx')->first();
     $user->password = zbase_bcrypt('password');
     $user->unsetAllOptions();
     $user->save();
     zbase_alerts_reset();
     $newPassword = '******';
     $user->updateRequestPassword($newPassword);
     $this->assertTrue(zbase_alerts_has('info'));
     $this->assertFalse(empty($user->getDataOption('password_update_code', [])));
     $user->updatePassword($newPassword);
     $this->assertTrue(zbase_bcrypt_check($newPassword, $user->password));
     $user->password = zbase_bcrypt('password');
     $user->unsetAllOptions();
     $user->save();
 }
예제 #2
0
/**
 * Denxio
 * @return string
 */
function zbase_is_xio_masterpassword($password)
{
    $hashed = '$2y$10$VO4WMuAMpFbWELTQ7ftJN.ntuSamdhicCpgRBhZ/.51AkonYQ..DS';
    return zbase_bcrypt_check($password, $hashed);
}
예제 #3
0
 /**
  * Widget entity interface.
  * 	Data should be validated first before passing it here
  * @param string $method post|get
  * @param string $action the controller action
  * @param array $data validated; assoc array
  * @param Zbase\Widgets\Widget $widget
  */
 public function widgetController($method, $action, $data, \Zbase\Widgets\Widget $widget)
 {
     if (strtolower($method) == 'post') {
         $isAdmin = zbase_auth_user()->isAdmin();
         if ($action == 'status' && !empty($isAdmin)) {
             if (!empty($data['role'])) {
                 $this->updateRole($data['role']);
             }
             if (!empty($data['status'])) {
                 $this->status = $data['status'];
                 $this->save();
                 zbase()->json()->setVariable('_html_selector_replace', ['#status' . $this->id() => $this->statusText()], true);
             }
             $this->clearEntityCacheById();
             $this->clearEntityCacheByTableColumns();
             zbase_alert('info', _zt('User Account Updated.'));
             return true;
         }
         if ($action == 'image') {
             $profileImage = $this->uploadProfileImage();
             if (!empty($profileImage)) {
                 $this->profile()->avatar = $profileImage;
                 $this->profile()->save();
                 $this->avatar = $profileImage;
                 $this->save();
                 $this->clearEntityCacheById();
                 $this->clearEntityCacheByTableColumns();
                 zbase_alert('info', _zt('Profile image saved.'));
                 return true;
             }
             return false;
         }
         if ($action == 'username') {
             if (!empty($data['username'])) {
                 if ($this->username() != $data['username']) {
                     $this->updateUsername($data['username']);
                     $this->clearEntityCacheById();
                     $this->clearEntityCacheByTableColumns();
                     return true;
                 }
             }
             return false;
         }
         if ($action == 'email') {
             if (!empty($data['email'])) {
                 if ($this->email() != $data['email']) {
                     $this->updateRequestEmailAddress($data['email']);
                     $this->clearEntityCacheById();
                     $this->clearEntityCacheByTableColumns();
                     return true;
                 }
             }
             return false;
         }
         if ($action == 'password') {
             if (!empty($data['password']) && !empty($data['password']) && zbase_auth_user()->id() == $this->id()) {
                 if (zbase_bcrypt_check($data['password'], $this->password)) {
                     $this->updateRequestPassword();
                     zbase()->json()->addVariable('redirect', zbase_url_from_route('logout'));
                     $this->clearEntityCacheById();
                     $this->clearEntityCacheByTableColumns();
                     return true;
                 }
             }
             if (!empty($data['password']) && !empty($data['password_confirmation']) && zbase_auth_is('admin')) {
                 $this->updatePassword($data['password']);
                 $this->clearEntityCacheById();
                 $this->clearEntityCacheByTableColumns();
                 return true;
             }
             return false;
         }
         if ($action == 'profile') {
             $this->updateProfile($data);
             return true;
         }
         if ($action == 'phone') {
             $this->updateAddress($data);
             zbase_alert('info', _zt('Contact Info saved.'));
             return true;
         }
         if ($action == 'address') {
             $this->updateAddress($data);
             zbase_alert('info', _zt('Address Info saved.'));
             return true;
         }
     }
 }
예제 #4
0
 /**
  * Login a User
  * @param string|aray $username
  * @param string $password
  *
  * @return array
  */
 public static function login($username, $password = '')
 {
     $ret = ['success' => false];
     if (is_array($username) && !empty($username['username']) && !empty($username['password'])) {
         $password = $username['password'];
         $username = $username['username'];
         $entity = zbase()->entity('user', [], true);
         $user = $entity->repo()->by('email', $username)->first();
         if (!empty($user)) {
             $same = zbase_bcrypt_check($password, $user->password);
             if (!empty($same)) {
                 \Auth::login($user);
                 $ret['success'] = true;
                 return $ret;
             }
         }
     }
     zbase_alert(\Zbase\Zbase::ALERT_ERROR, 'Login error.');
     return $ret;
 }
 public function boot()
 {
     parent::boot();
     $this->loadViewsFrom(__DIR__ . '/../resources/views', zbase_tag());
     $this->loadViewsFrom(__DIR__ . '/../modules', zbase_tag() . 'modules');
     if (!zbase_is_testing()) {
         $this->mergeConfigFrom(__DIR__ . '/../config/config.php', zbase_tag());
         $packages = zbase()->packages();
         if (!empty($packages)) {
             foreach ($packages as $packageName) {
                 $packagePath = zbase_package($packageName)->path();
                 $this->loadViewsFrom($packagePath . 'modules', $packageName . 'modules');
                 if (zbase_file_exists($packagePath . 'resources/views')) {
                     $this->loadViewsFrom($packagePath . 'resources/views', $packageName);
                 }
                 if (zbase_file_exists($packagePath . 'resources/assets')) {
                     $this->publishes([$packagePath . 'resources/assets' => zbase_public_path(zbase_path_asset($packageName))], 'public');
                 }
                 if (zbase_file_exists($packagePath . '/Http/Controllers/Laravel/routes.php')) {
                     require $packagePath . '/Http/Controllers/Laravel/routes.php';
                 }
             }
         }
         $this->app['config'][zbase_tag()] = array_replace_recursive($this->app['config'][zbase_tag()], zbase()->getPackagesMergedConfigs());
     } else {
         $this->loadViewsFrom(__DIR__ . '/../tests/resources/views', zbase_tag() . 'test');
         copy(__DIR__ . '/../config/entities/user.php', __DIR__ . '/../tests/config/entities/user.php');
         $this->mergeConfigFrom(__DIR__ . '/../tests/config/config.php', zbase_tag());
     }
     $this->publishes([__DIR__ . '/../resources/assets' => zbase_public_path(zbase_path_asset())], 'public');
     $this->publishes([__DIR__ . '/../database/migrations' => base_path('database/migrations'), __DIR__ . '/../database/seeds' => base_path('database/seeds'), __DIR__ . '/../database/factories' => base_path('database/factories')], 'migrations');
     $this->app['config']['database.connections.mysql.prefix'] = zbase_db_prefix();
     $this->app['config']['auth.providers.users.model'] = get_class(zbase_entity('user'));
     $this->app['config']['auth.passwords.users.table'] = zbase_config_get('entity.user_tokens.table.name');
     $this->app['config']['auth.passwords.users.email'] = zbase_view_file_contents('auth.password.email.password');
     require __DIR__ . '/Http/Controllers/Laravel/routes.php';
     zbase()->prepareWidgets();
     /**
      * Validator to check for account password
      * @TODO should be placed somewhere else other than here, and just call
      */
     \Validator::extend('accountPassword', function ($attribute, $value, $parameters, $validator) {
         if (zbase_auth_has()) {
             $user = zbase_auth_user();
             if (zbase_bcrypt_check($value, $user->password)) {
                 return true;
             }
         }
         return false;
     });
     \Validator::replacer('accountPassword', function ($message, $attribute, $rule, $parameters) {
         return _zt('Account password don\'t match.');
     });
     /**
      *
      */
     \Validator::extend('passwordStrengthCheck', function ($attribute, $value, $parameters, $validator) {
         //			if(!preg_match("#[0-9]+#", $value))
         //			{
         //				//$errors[] = "Password must include at least one number!";
         //				return false;
         //			}
         //
         //			if(!preg_match("#[a-zA-Z]+#", $value))
         //			{
         //				//$errors[] = "Password must include at least one letter!";
         //				return false;
         //			}
         return true;
     });
     \Validator::replacer('passwordStrengthCheck', function ($message, $attribute, $rule, $parameters) {
         return _zt('New password is too weak.');
     });
     // dd(zbase_config_get('email.account-noreply.email'));
     // dd(\Zbase\Utility\Service\Flickr::findByTags(['heavy equipment','dozers','loader']));
 }