*/ public static array $validationRules = [ 'subuser_id' => ['required', 'numeric', 'min:1'], 'permission' => ['required', 'string'], ]; protected function casts(): array { return [ 'subuser_id' => 'integer', ]; } /** * All the permissions available on the system. * * @return array */ public static function permissionData(): array { return [ [ 'name' => 'control', 'icon' => 'tabler-terminal-2', 'permissions' => ['console', 'start', 'stop', 'restart'], ], [ 'name' => 'user', 'icon' => 'tabler-users', 'permissions' => ['read', 'create', 'update', 'delete'], ], [ 'name' => 'file', 'icon' => 'tabler-files', 'permissions' => ['read', 'read-content', 'create', 'update', 'delete', 'archive', 'sftp'], ], [ 'name' => 'backup', 'icon' => 'tabler-file-zip', 'permissions' => ['read', 'create', 'delete', 'download', 'restore'], ], [ 'name' => 'allocation', 'icon' => 'tabler-network', 'permissions' => ['read', 'create', 'update', 'delete'], ], [ 'name' => 'startup', 'icon' => 'tabler-player-play', 'permissions' => ['read', 'update', 'docker-image'], ], [ 'name' => 'database', 'icon' => 'tabler-database', 'permissions' => ['read', 'create', 'update', 'delete', 'view-password'], ], [ 'name' => 'schedule', 'icon' => 'tabler-clock', 'permissions' => ['read', 'create', 'update', 'delete'], ], [ 'name' => 'settings', 'icon' => 'tabler-settings', 'permissions' => ['rename', 'reinstall'], ], [ 'name' => 'activity', 'icon' => 'tabler-stack', 'permissions' => ['read'], ], ]; } /** * Returns all the permissions available on the system for a user to have when controlling a server. */ public static function permissions(): Collection { $permissions = [ 'websocket' => [ 'description' => 'Allows the user to connect to the server websocket, giving them access to view console output and realtime server stats.', 'keys' => [ 'connect' => 'Allows a user to connect to the websocket instance for a server to stream the console.', ], ], ]; foreach (static::permissionData() as $data) { $permissions[$data['name']] = [ 'description' => trans('server/users.permissions.' . $data['name'] . '_desc'), 'keys' => collect($data['permissions'])->mapWithKeys(fn ($key) => [$key => trans('server/users.permissions.' . $data['name'] . '_' . str($key)->replace('-', '_'))])->toArray(), ]; } return collect($permissions); } }