mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-06-20 02:44:19 +08:00
feat: Enhance user permissions handling when no users on server
This commit is contained in:
@@ -16,6 +16,7 @@ class AuthInfo {
|
||||
ServerStatus? get status => _status;
|
||||
Token? _token;
|
||||
Token? get token => _token;
|
||||
bool? get noUser => _status?.noUser;
|
||||
SharedToken? _sharedToken;
|
||||
SharedToken? get sharedToken => _sharedToken;
|
||||
bool get isAuthed => (_user != null);
|
||||
@@ -26,14 +27,18 @@ class AuthInfo {
|
||||
bool? get isAdmin => _user?.isAdmin;
|
||||
bool? get isRoot => _user != null ? _user!.id == 0 : null;
|
||||
bool? get isDocker => _status?.isDocker;
|
||||
bool? get canReadGallery =>
|
||||
_user?.permissions.has(UserPermission.readGallery);
|
||||
bool? get canEditGallery =>
|
||||
_user?.permissions.has(UserPermission.editGallery);
|
||||
bool? get canDeleteGallery =>
|
||||
_user?.permissions.has(UserPermission.deleteGallery);
|
||||
bool? get canManageTasks =>
|
||||
_user?.permissions.has(UserPermission.manageTasks);
|
||||
bool? get canReadGallery => noUser == true
|
||||
? true
|
||||
: _user?.permissions.has(UserPermission.readGallery);
|
||||
bool? get canEditGallery => noUser == true
|
||||
? true
|
||||
: _user?.permissions.has(UserPermission.editGallery);
|
||||
bool? get canDeleteGallery => noUser == true
|
||||
? true
|
||||
: _user?.permissions.has(UserPermission.deleteGallery);
|
||||
bool? get canManageTasks => noUser == true
|
||||
? true
|
||||
: _user?.permissions.has(UserPermission.manageTasks);
|
||||
bool? get canShareGallery =>
|
||||
_user?.permissions.has(UserPermission.shareGallery);
|
||||
MeilisearchInfo? get meilisearch => _status?.meilisearch;
|
||||
|
||||
@@ -92,6 +92,9 @@ class _NewUserPage extends State<NewUserPage> {
|
||||
}
|
||||
final i18n = AppLocalizations.of(context)!;
|
||||
final maxWidth = MediaQuery.of(context).size.width;
|
||||
if (auth.noUser == true) {
|
||||
_isAdmin = true;
|
||||
}
|
||||
return Container(
|
||||
padding: maxWidth < 400
|
||||
? const EdgeInsets.symmetric(vertical: 20, horizontal: 5)
|
||||
@@ -159,16 +162,18 @@ class _NewUserPage extends State<NewUserPage> {
|
||||
},
|
||||
obscureText: !_passwordVisible,
|
||||
)),
|
||||
auth.isRoot == true
|
||||
auth.isRoot == true || auth.noUser == true
|
||||
? _buildWithVecticalPadding(LabeledCheckbox(
|
||||
value: _isAdmin,
|
||||
onChanged: (b) {
|
||||
if (b != null) {
|
||||
setState(() {
|
||||
_isAdmin = b;
|
||||
});
|
||||
}
|
||||
},
|
||||
onChanged: auth.noUser == true
|
||||
? null
|
||||
: (b) {
|
||||
if (b != null) {
|
||||
setState(() {
|
||||
_isAdmin = b;
|
||||
});
|
||||
}
|
||||
},
|
||||
label: Text(i18n.admin)))
|
||||
: Container(),
|
||||
!_isAdmin
|
||||
|
||||
@@ -238,7 +238,7 @@ List<PopupMenuEntry<MoreVertSettings>> buildMoreVertSettings(
|
||||
list.add(PopupMenuItem(
|
||||
value: MoreVertSettings.taskManager, child: Text(i18n.taskManager)));
|
||||
}
|
||||
if (path != "/sessions") {
|
||||
if (path != "/sessions" && auth.noUser != true) {
|
||||
list.add(PopupMenuItem(
|
||||
value: MoreVertSettings.sessions, child: Text(i18n.sessionManagemant)));
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ class HomeDrawer extends StatelessWidget {
|
||||
},
|
||||
)
|
||||
: Container(),
|
||||
auth.isAdmin == true
|
||||
auth.isAdmin == true || auth.noUser == true
|
||||
? ListTile(
|
||||
leading: const Icon(Icons.manage_accounts),
|
||||
title: Text(i18n.userManagemant),
|
||||
|
||||
@@ -85,7 +85,7 @@ class _SettingsPage extends State<SettingsPage>
|
||||
onTap: () {
|
||||
context.push("/settings/cache");
|
||||
}),
|
||||
auth.isAdmin == true
|
||||
auth.isAdmin == true || auth.noUser == true
|
||||
? ListTile(
|
||||
leading: const Icon(Icons.admin_panel_settings),
|
||||
title: Text(i18n.server),
|
||||
|
||||
Reference in New Issue
Block a user