/** * Show the currently logged in (or not) user */ public function show($id) { if ($user = Confide::user()) { return Magma::read('User', $user->id); } return ['id' => null, 'username' => 'guest']; }
/** * Delete user record */ public function destroy($id) { return Magma::delete('User', $id); }
/** * Show a list of permissions set on app's models */ public static function getAccessRules() { $models = Magma::getModels(); $rules = []; $allRoles = \Role::all(); $getRoles = function ($roles) use($allRoles) { $return = []; $roles = (array) $roles; foreach ($roles as $role) { if ($role == '*') { foreach ($allRoles as $allRole) { $return[] = $allRole->name; } } else { foreach ($allRoles as $allRole) { if ($allRole->name == $role) { $return[] = $allRole->name; } } } } return $return; }; foreach ($models as $model) { // Each model can define their own access rules // Rule name starts with model name for sorting purposes if (!empty($model::$accessRules)) { foreach ($model::$accessRules as $key => $rule) { if (isset($rules['display_name'])) { $rules[] = ['name' => strtolower($model) . '_' . $key, 'display_name' => $rule['display_name'], 'model' => $model, 'roles' => $getRoles($rule['roles'])]; } } } // Same for field level rules if (isset($model::$accessRules) && !empty($model::$accessRules['fields'])) { foreach ($model::$accessRules['fields'] as $fieldName => $fieldRules) { foreach ($fieldRules as $key => $rule) { $rules[] = ['name' => strtolower($model) . '_field_' . $fieldName . '_' . $key, 'display_name' => $rule['display_name'], 'model' => $model, 'roles' => $getRoles($rule['roles'])]; } } } } return $rules; }