示例#1
0
 /**
  * Add a user to an existing role. This will insert the added role into the users active RoleSet
  * instance upon successful insertion into the database
  *
  * @param Role $role Existing role to be added to
  * @param \RBAC\Subject\SubjectInterface $subject Initialized subject instance
  * @return bool Database execution success status
  */
 public function roleAddSubject(Role $role, SubjectInterface $subject)
 {
     if ($this->roleAddSubjectId($role, $subject->id())) {
         $users_role_set = $subject->getRoleSet();
         $users_role_set->addRole($role);
         $subject->loadRoleSet($users_role_set);
         return true;
     } else {
         return false;
     }
 }
示例#2
0
 /**
  * @param SubjectInterface $subject
  *
  * @return Role|\RBAC\Role\Role[]
  */
 public function roleFetchSubjectRoles(SubjectInterface $subject)
 {
     $query = "\n            SELECT\n                role_id\n            FROM\n                auth_subject_role\n            WHERE\n                subject_id = :subject_id\n        ";
     $roles = [];
     $cur = $this->db->prepare($query);
     $cur->bindValue(":subject_id", $subject->id(), PDO::PARAM_INT);
     try {
         $cur->execute();
         $res = $cur->fetchAll(PDO::FETCH_OBJ);
         if (!$res) {
             return [];
         } else {
             $role_ids = array_map(function ($row) {
                 return $row->role_id;
             }, $res);
             $roles = $this->roleFetchById($role_ids);
         }
     } catch (PDOException $db_err) {
         if ($this->logger) {
             $this->logger->error("Failed to fetch roles for subject", ['exception' => $db_err]);
         }
     }
     return $roles;
 }