public function setPermissions($permission_ids, &$errors = array()) { $db = DB::Instance(); $db->StartTrans(); $hp = new HasPermission(); $hp->idField = 'roleid'; if (!$hp->delete($this->id)) { $errors[] = 'Failed to update role permissions'; } if (count($errors) === 0) { foreach ($permission_ids as $id) { if (empty($id)) { continue; } $permission = DataObject::Factory(array('roleid' => $this->id, 'permissionsid' => $id), $errors, 'HasPermission'); if (count($errors) === 0 && $permission) { if ($permission->save()) { continue; } } $errors[] = 'Failed to update role permissions'; break; } } if (count($errors) > 0) { $db->CompleteTrans(); return false; } return $db->CompleteTrans(); }
/** * Checks a user has at-least one of a permisson * * @param HasPermission $user owner of HasPermission * @param array $permissions and array of permission keys * @return ConnorVG\Permissions\Permission */ public function hasAtleastOneOf($user, $permissions) { foreach ($permissions as $permission) { if ($user->hasPermission($permission)) { return true; } } return false; }