Example #1
0
 public function testBizRuleViaParams()
 {
     $perm = new Permission(['code' => 'test', 'name' => 'Test codename', 'is_default' => true, 'bizrule' => '$params["foo"]=="bar"']);
     $this->assertTrue($perm->isValid());
     $this->assertTrue($perm->save());
     $user = User::objects()->createUser('foo', 'bar', '*****@*****.**');
     $this->assertEquals(1, $user->permissions->count());
     $this->p->fetchData();
     $this->assertTrue($this->app->permissions->canBizRule('test', ['foo' => 'bar']));
     $this->assertFalse($this->app->permissions->canBizRule('test', ['foo' => 'default']));
     $this->assertTrue($user->can('test', ['foo' => 'bar'], false));
     $this->assertFalse($user->can('test', ['foo' => 'default'], false));
 }
Example #2
0
 /**
  * Create not privileged user
  * @param $username
  * @param $password
  * @param $email
  * @param array $extra
  * @return array|\Modules\User\Models\User Errors or created model
  */
 public function createUser($username, $password, $email = null, array $extra = [])
 {
     /** @var \Modules\User\PasswordHasher\IPasswordHasher $hasher */
     $auth = Mindy::app()->auth;
     $hasher = $auth->getPasswordHasher(isset($extra['hash_type']) ? $extra['hash_type'] : $this->defaultPasswordHasher);
     $model = $this->getModel();
     $model->setAttributes(array_merge(['username' => $username, 'email' => $email, 'password' => $hasher->hashPassword($password), 'activation_key' => $this->generateActivationKey()], $extra));
     if ($model->isValid() && $model->save()) {
         $groups = Group::objects()->filter(['is_default' => true])->all();
         foreach ($groups as $group) {
             $model->groups->link($group);
         }
         $permission = Permission::objects()->filter(['is_default' => true])->all();
         foreach ($permission as $perm) {
             $model->permissions->link($perm);
         }
         $eventManager = $this->getEventManager();
         $module = Mindy::app()->getModule('User');
         if ($module->sendUserCreateMail) {
             $eventManager->send($model, 'createUser', $model);
         } else {
             if ($module->sendUserCreateRawMail) {
                 $eventManager->send($model, 'createRawUser', $model, $password);
             }
         }
     }
     return $model;
 }
Example #3
0
 public function testInit()
 {
     $this->assertEquals(0, User::objects()->count());
     $this->assertEquals(0, Group::objects()->count());
     $this->assertEquals(0, Permission::objects()->count());
     $this->assertEquals(0, UserPermission::objects()->count());
     $this->assertEquals(0, GroupPermission::objects()->count());
     $this->assertEquals(0, Key::objects()->count());
     $this->assertEquals(0, Session::objects()->count());
 }
Example #4
0
 public static function getFields()
 {
     return ['user' => ['class' => ForeignField::className(), 'modelClass' => User::className(), 'verboseName' => self::t("User")], 'permission' => ['class' => ForeignField::className(), 'modelClass' => Permission::className(), 'verboseName' => self::t("Permission")]];
 }
Example #5
0
 public static function getFields()
 {
     return ['user_group' => ['class' => ForeignField::className(), 'modelClass' => Group::className(), 'verboseName' => UserModule::t("Group")], 'permission' => ['class' => ForeignField::className(), 'modelClass' => Permission::className(), 'verboseName' => UserModule::t("Permission")]];
 }
Example #6
0
 /**
  * Функция хелпер для установки прав доступа по pk на владельца по переданному типу
  * @param $permId
  * @param $ownerId
  * @param $type
  */
 public function setId($permId, $ownerId, $type)
 {
     // Проверяем корректность переданного типа
     if (in_array($type, array(self::TYPE_USER, self::TYPE_GROUP)) === false) {
         return false;
     }
     // Находим код прав доступа
     $model = Permission::objects()->filter(['pk' => $permId])->get();
     if ($model === null) {
         return false;
     }
     return $this->set($model->code, $ownerId, $type);
 }