/** * Remove project member. * * @param $id User ID * * @return \Avalon\Http\RedirectResponse|\Avalon\Http\Response */ public function destroyAction($id) { $userRole = UserRole::select()->where('project_id = ?')->andWhere('user_id = ?')->setParameter(0, $this->currentProject['id'])->setParameter(1, $id)->fetch(); if (!$userRole) { return $this->show404(); } else { $userRole->delete(); return $this->redirectTo('project_settings_members'); } }
/** * Remove project member. * * @param $id User ID * * @return \Avalon\Http\RedirectResponse|\Avalon\Http\Response */ public function destroyAction($id) { $userRole = UserRole::select()->where('project_id = ?')->andWhere('user_id = ?')->setParameter(0, $this->currentProject['id'])->setParameter(1, $id)->fetch(); if (!$userRole) { return $this->show404(); } $userRole->delete(); return $this->respondTo(function ($format) { if ($format == 'json') { return $this->jsonResponse(['deleted' => true]); } else { return $this->redirectTo('project_settings_members'); } }); }
/** * Always call this when defining `__construct()` in sub-classes. */ public function __construct() { $this->db = ConnectionManager::getConnection(); // Modal? if (Request::$headers->has('X-Modal')) { $this->isModal = Request::$headers->get('X-Modal') == true; } // Get current project. if (Request::$properties->has('pslug')) { $this->currentProject = Project::find('slug', Request::$properties->get('pslug')) ?: null; $GLOBALS['current_project'] = $this->currentProject; $this->before('*', function () { if (!$this->hasPermission('view', $this->currentProject)) { return $this->show404(); } }); } else { $GLOBALS['current_project'] = null; } // Get current user. if ($sessionHash = Request::$cookies->get('traq')) { if ($this->currentProject) { $user = User::select('u.*')->addSelect('pur.project_role_id')->leftJoin('u', UserRole::tableName(), 'pur', 'pur.project_id = :project_id AND pur.user_id = u.id'); $user->where('u.session_hash = :session_hash'); $user->setParameter('project_id', $this->currentProject['id']); $user->setParameter('session_hash', $sessionHash); $this->currentUser = $user->fetch() ?: null; } else { $this->currentUser = User::find('session_hash', $sessionHash) ?: null; } $GLOBALS['current_user'] = $this->currentUser; } else { $GLOBALS['current_user'] = null; } $GLOBALS['permissions'] = Permission::getPermissions($this->currentUser, $this->currentProject); // Add Traq as first breadcrumb. $this->addCrumb(setting('title'), $this->generateUrl('root')); // Check if the user has permission to view the current project if (isset($this->currentProject)) { $this->before('*', function () { if (!$this->hasPermission('view')) { return $this->show403(); } }); } // If the user has a `sha1` hashed password, require them to change it because // as of Traq 4.1, only mcrypt passwords will work. if ($this->currentUser['password_ver'] == 'sha1') { $this->before('*', function () { if (Request::$properties['controller'] != 'Traq\\Controllers\\UserCP' && Request::$properties['controller'] != 'Traq\\Controllers\\Sessions') { return $this->redirectTo('usercp_password'); } }); } }
function createProjectManager($project = null, $user = null) { if (!$project) { $project = createProject(); } if (!$user) { $user = createUser(); } $role = ProjectRole::find(1); $relation = new UserRole(['user_id' => $user['id'], 'project_id' => $project['id'], 'project_role_id' => $role['id']]); $relation->save(); return $relation; }