hasPermission('create_'.$entityType)) return true; else return false; } /** * @param User $user * @param $entityType * * @return bool|mixed */ public static function view(User $user, $entityType) { /* $className = static::className($entityType); if (method_exists($className, 'view')) { return call_user_func([$className, 'view'], $user, $entityType); } return false;*/ if($user->hasPermission('view_'.$entityType)) return true; else return false; } /** * @param User $user * @param $item - entity name or object * * @return bool */ public static function edit(User $user, $item) { if (! static::checkModuleEnabled($user, $item)) return false; $entityType = is_string($item) ? $item : $item->getEntityType(); return $user->hasPermission('edit_' . $entityType) || $user->owns($item); } /** * @param User $user * @param $item - entity name or object * @return bool */ private static function checkModuleEnabled(User $user, $item) { $entityType = is_string($item) ? $item : $item->getEntityType(); return $user->account->isModuleEnabled($entityType); } private static function className($entityType) { if (! Utils::isNinjaProd()) { if ($module = \Module::find($entityType)) { return "Modules\\{$module->getName()}\\Policies\\{$module->getName()}Policy"; } } $studly = Str::studly($entityType); return "App\\Policies\\{$studly}Policy"; } }