From e539df5268be8ca6d217ea310a8fe085a6aaab8f Mon Sep 17 00:00:00 2001 From: ljf Date: Wed, 4 Sep 2019 23:58:53 +0200 Subject: [PATCH 01/34] [wip] Create the permissions view --- src/css/style.less | 32 ++++++++++++++++ src/js/yunohost/controllers/users.js | 56 ++++++++++++++++++++++++++++ src/locales/en.json | 8 ++++ src/views/user/user_list.ms | 3 ++ 4 files changed, 99 insertions(+) diff --git a/src/css/style.less b/src/css/style.less index 201309b9..d3bc578f 100644 --- a/src/css/style.less +++ b/src/css/style.less @@ -101,6 +101,10 @@ button { color: transparent; } +.label { + border-radius: 1px; +} + /* * The top heading of the doc * @@ -659,6 +663,34 @@ input[type='radio'].nice-radio { } +/** Permissions View **/ +#view-permissions { + .panel-body { + h3 { + margin-top:0; + } + .label-removable { + display:inline-block; + font-size:1.3em; + color:#666; + background-color:#ccc; + margin-right:7px; + margin-bottom:7px; + .label-separator { + margin-left:7px; + color:white; + } + > a { + color:white; + text-decoration: none; + } + > a:hover { + color:@label-danger-bg; + } + } + } +} + /** Flash messages **/ #flashMessage { max-height: 120px; diff --git a/src/js/yunohost/controllers/users.js b/src/js/yunohost/controllers/users.js index 92e235ad..3bdfed57 100644 --- a/src/js/yunohost/controllers/users.js +++ b/src/js/yunohost/controllers/users.js @@ -5,6 +5,59 @@ var PASSWORD_MIN_LENGTH = 4; + /** + * Permissions + * + */ + + // List groups and permissions + app.get('#/permissions', function (c) { + c.api('/users/groups', function(data_groups) { + //c.api('/users/permissions', function(data_permissions) { + data = { + 'groups':[ + { + 'name': 'all_users', + 'all_users': "true", + 'users': ['ljf', 'john', 'camille', 'sam', 'eli', 'bob', 'sandra', + 'aaron', 'mike'], + 'permissions': ['Mail', 'XMPP'] + }, + { + 'name': 'members', + 'users': ['ljf', 'john', 'eli', 'bob', 'sandra', + 'aaron', 'mike'], + 'permissions': ['Mail', 'XMPP', 'Wekan', 'Wordpress (editor)'] + }, + { + 'name':'volunters', + 'users':['ljf', 'toto'], + 'permissions': [] + }, + { + 'name':'admins', + 'users':['ljf', 'toto'], + 'permissions': [] + } + ], + 'users_with_specific_permissions':[ + { + 'username': 'ljf', + 'permissions': ['Nextcloud'] + }, + { + 'username': 'toto', + 'permissions': ['Nextcloud'] + } + ], + 'users': ['ljf', 'toto', 'titi', 'tutu', 'tata'], + 'permissions': ['Mail', 'XMPP', 'Wekan', 'nextcloud'] + }; + c.view('user/user_permission', data); + //}); + }); + }); + /** * Users * @@ -234,5 +287,8 @@ }); }); + + + })(); diff --git a/src/locales/en.json b/src/locales/en.json index cd0d4c4b..9e9c5f83 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -158,6 +158,7 @@ "gateway": "Gateway: ", "good_practices_about_admin_password": "You are now about to define a new admin password. The password should be at least 8 characters - though it is good practice to use longer password (i.e. a passphrase) and/or to use various kind of characters (uppercase, lowercase, digits and special characters).", "good_practices_about_user_password": "You are now about to define a new user password. The password should be at least 8 characters - though it is good practice to use longer password (i.e. a passphrase) and/or to use various kind of characters (uppercase, lowercase, digits and special characters).", + "group": "Group", "home": "Home", "hook_adminjs_group_configuration": "System configurations", "hook_conf_cron": "Automatic tasks", @@ -271,6 +272,13 @@ "logs_share_with_yunopaste": "Share with YunoPaste", "logs_more": "Display more lines", "path_url": "Path", + "perm_add_user": "Add a user", + "perm_add_permission": "Add a permission", + "perm_groups_new": "New group", + "perm_manage_permissions": "Manage permissions", + "perm_all_users_group_explanation": "This is a specific group containing all users registered on this instance", + "perm_specific_permissions": "User specific permissions", + "permissions": "Permissions", "port": "Port", "ports": "Ports", "postinstall": "Post-installation", diff --git a/src/views/user/user_list.ms b/src/views/user/user_list.ms index b2aebff6..72148055 100644 --- a/src/views/user/user_list.ms +++ b/src/views/user/user_list.ms @@ -4,6 +4,9 @@
+ + {{t 'manage_permissions'}} + {{t 'users_new'}} From 059bb67ced96fa93aae5008216b974e6a35581d3 Mon Sep 17 00:00:00 2001 From: ljf Date: Thu, 5 Sep 2019 00:02:41 +0200 Subject: [PATCH 02/34] [wip] Add the permissions view --- src/views/user/user_permission.ms | 142 ++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 src/views/user/user_permission.ms diff --git a/src/views/user/user_permission.ms b/src/views/user/user_permission.ms new file mode 100644 index 00000000..431c80a9 --- /dev/null +++ b/src/views/user/user_permission.ms @@ -0,0 +1,142 @@ + + + + +
+ +
+{{#each groups}} +
+ +
+
+
+
+

{{t 'users'}}

+
+
+ {{#if all_users}} + + {{else}} + {{#each users}} + + + {{.}} + + + + {{t 'delete'}} + + + {{/each}} +
+ + +
+ {{/if}} +
+
+
+
+
+

{{t 'permissions'}}

+
+
+ {{#each permissions}} + {{.}} + + + + {{t 'delete'}} + + + {{/each}} +
+ + +
+
+
+
+
+
+{{/each}} +
+ +
+
+ {{#each users_with_specific_permissions}} +
+
+

{{username}}

+
+
+ {{#each permissions}} + {{.}} + + + + {{t 'delete'}} + + + {{/each}} +
+ + +
+
+
+
+ {{/each}} +
+ + +
+
+
+
+
From 45907d66c0d1cb205da53ca48172ef59e51b82b5 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Wed, 11 Sep 2019 04:02:49 +0200 Subject: [PATCH 03/34] [mod] rename parameters according to changes in cli/core for ux --- src/js/yunohost/controllers/domains.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/yunohost/controllers/domains.js b/src/js/yunohost/controllers/domains.js index 259b8b08..d50da321 100644 --- a/src/js/yunohost/controllers/domains.js +++ b/src/js/yunohost/controllers/domains.js @@ -306,7 +306,7 @@ y18n.t('confirm_change_maindomain'), function(){ var params = { - new_domain: c.params['domain'] + new_main_domain: c.params['domain'] }; c.api('/domains/main', function(data) { // http://api.yunohost.org/#!/tools/tools_maindomain_put_1 store.clear('slide'); From 713a9529d6ce4c692ea50cf86091add289633afd Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 14 Oct 2019 05:11:22 +0200 Subject: [PATCH 04/34] Remove the whole monitoring / glances stuff --- src/js/yunohost/controllers/monitor.js | 50 ----- src/locales/en.json | 37 ---- src/views/tools/tools_list.ms | 4 - src/views/tools/tools_monitoring.ms | 283 ------------------------- 4 files changed, 374 deletions(-) delete mode 100644 src/js/yunohost/controllers/monitor.js delete mode 100644 src/views/tools/tools_monitoring.ms diff --git a/src/js/yunohost/controllers/monitor.js b/src/js/yunohost/controllers/monitor.js deleted file mode 100644 index 527e466c..00000000 --- a/src/js/yunohost/controllers/monitor.js +++ /dev/null @@ -1,50 +0,0 @@ -(function() { - // Get application context - var app = Sammy.apps['#main']; - var store = app.store; - - /** - * Monitor - * - */ - - // Server monitoring - app.get('#/tools/monitor', function (c) { - var monitorData = {}; - - // Why this method ? - c.api('/services/glances', function(data) { // ? - monitorData.status = true; - - if (data.status == 'running') { - c.api('/monitor/system', function(data) { - monitorData.system = data; - - c.api('/monitor/disk', function(data) { - monitorData.disk = data; - - c.api('/monitor/network', function(data) { - monitorData.network = data; - - // Remove useless interface - delete monitorData.network.usage.lo; - - // Get YunoHost versions too - c.api('/diagnosis', function(diagnosis) { - monitorData.versions = diagnosis.packages; - c.view('tools/tools_monitoring', monitorData); - }); - }); - - }); - }); - } - else { - monitorData.status = false; - c.view('tools/tools_monitoring', monitorData); - } - - }, 'GET'); - }); - -})(); diff --git a/src/locales/en.json b/src/locales/en.json index cd0d4c4b..ce41ad6f 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -46,7 +46,6 @@ "application": "Application", "applications": "Applications", "archive_empty": "Empty archive", - "available": "Available", "available_apps": "Available apps", "backup": "Backup", "backup_action": "Backup", @@ -62,12 +61,9 @@ "backup_type": "Type", "backups_no": "No backup", "begin": "Begin", - "bit_rate": "Bit rate", "both": "Both", "cancel": "Cancel", "check": "Check", - "check_mx": "MX record", - "check_stmp": "port 25 access", "close": "Close", "confirm_access_add": "Are you sure you want to add access to %s for all users?", "confirm_access_clear": "Are you sure you want to clear all access to %s?", @@ -100,10 +96,7 @@ "confirm_reboot_action_shutdown": "Are you sure you want to shutdown your server?", "connection": "Connection", "copy": "Copy", - "count_min": "%s min", - "cpu_load": "CPU Load", "created_at": "Created at", - "cumulative_usage": "Cumulative usage", "current_maintainer_title": "Current maintainer of this package", "custom_app_install": "Install custom app", "custom_app_url_only_github": "Currently only from GitHub", @@ -117,7 +110,6 @@ "diagnosis_with_private": "Diagnosis with private data", "disable": "Disable", "disabled": "Disabled", - "disk": "Disk", "dns": "DNS", "domain": "Domain", "domain_add": "Add domain", @@ -148,14 +140,11 @@ "error_connection_interrupted": "The server closed the connection instead of answering it. Has nginx or the yunohost-api been restarted or stoppted for some reason? (Error code/message: %s)", "everyone_has_access": "Everyone has access.", "experimental_warning": "Warning: this feature is experimental and not consider stable, you shouldn't be using it except if you know what you are doing.", - "filesystem": "Filesystem", "firewall": "Firewall", "footer_version": "Powered by YunoHost %s (%s).", "form_input_example": "Example: %s", "free": "Free", "from_to": "from %s to %s", - "fs_type": "FS Type", - "gateway": "Gateway: ", "good_practices_about_admin_password": "You are now about to define a new admin password. The password should be at least 8 characters - though it is good practice to use longer password (i.e. a passphrase) and/or to use various kind of characters (uppercase, lowercase, digits and special characters).", "good_practices_about_user_password": "You are now about to define a new user password. The password should be at least 8 characters - though it is good practice to use longer password (i.e. a passphrase) and/or to use various kind of characters (uppercase, lowercase, digits and special characters).", "home": "Home", @@ -174,7 +163,6 @@ "hook_data_home_desc": "User data located in /home/USER", "hook_data_mail": "Mail", "hook_data_mail_desc": "Raw emails stored on the server", - "hostname": "Hostname", "id": "ID", "inactive": "Inactive", "infos": "Info", @@ -185,9 +173,7 @@ "installed": "Installed", "installed_apps": "Installed apps", "installing": "Installing", - "interface": "Interface", "internal_exception": "Yunohost encountered an internal error:/
Really sorry about that.
You should look for help on the forum or the chat to fix the situation, or report the bug on the bugtracker.

The following information might be useful for the person helping you:

Action

%s%s

Traceback

%s
", - "io": "I/O", "ipv4": "IPv4", "ipv6": "IPv6", "label": "Label", @@ -196,7 +182,6 @@ "license": "License", "loading": "Loading …", "local_archives": "Local archives", - "local_ip": "Local IP", "log": "Log", "logged_in": "Logged in", "logged_out": "Logged out", @@ -209,7 +194,6 @@ "manage_apps": "Manage apps", "manage_domains": "Manage domains", "manage_users": "Manage users", - "memory": "Memory", "menu": "Menu", "migrations": "Migrations", "migrations_pending": "Pending migrations", @@ -217,14 +201,9 @@ "migrations_no_pending": "No pending migrations", "migrations_no_done": "No previous migrations", "mode": "Mode", - "monitoring": "Monitoring", - "monitoring_check_glances": "Check glances service status.", - "monitoring_disabled": "Monitoring is not enabled.", - "mount_point": "Mount point", "multi_instance": "Multi instance", "myserver": "myserver", "myserver_org": "myserver.org", - "network": "Network", "next": "Next", "no": "No", "no_allowed_users": "No allowed users.", @@ -240,7 +219,6 @@ "operations": "Operations", "orphaned": "not maintained", "orphaned_details": "This app is not maintained anymore. It may still be working but won't receive any upgrade. Feel free to come and revive it!", - "os": "OS", "password": "Password", "password_confirmation": "Password confirmation", "password_description": "Password must be at least %s characters long.", @@ -280,13 +258,8 @@ "postinstall_intro_3": "You can obtain more information by visiting the appropriate documentation page", "postinstall_password": "This password will be used to manage everything on your server. Take the time to choose it wisely.", "previous": "Previous", - "process": "Process", "protocol": "Protocol", - "public_ip": "Public IP: ", - "ram": "RAM", - "read": "Read", "read_more": "Read more", - "reception": "Reception", "refresh_app_list": "Refresh list", "remove_access": "Remove access", "request_adoption": "waiting adoption", @@ -295,7 +268,6 @@ "request_help_details": "The current maintainer would like some help with the maintainance of this app. Feel free to come contribute on it!", "restore": "Restore", "run": "Run", - "running": "Running", "save": "Save", "search_for_apps": "Search for apps...", "select_user": "Select user", @@ -317,7 +289,6 @@ "storage_create": "Add remote storage", "storages_new": "New remote storage", "storages_no": "No storages.", - "swap": "Swap", "system": "System", "system_apps": "Apps", "system_apps_nothing": "There are no apps to upgrade.", @@ -329,7 +300,6 @@ "system_upgrade_all_applications_btn": "Upgrade all applications", "system_upgrade_all_packages_btn": "Upgrade all packages", "tcp": "TCP", - "time_since_update": "Time since update: ", "tools": "Tools", "tools_adminpw": "Change administration password", "tools_adminpw_confirm_placeholder": "Confirm the new password", @@ -351,8 +321,6 @@ "tools_shutdown_done": "Shutting down...", "tools_shuttingdown": "Your server is powering off. As long as your server is off, you won't be able to use the web administration.", "tools_shutdown_reboot": "Shutdown/Reboot", - "total": "Total", - "transmission": "Transmission", "udp": "UDP", "unauthorized": "Unauthorized", "uninstall": "Uninstall", @@ -364,10 +332,7 @@ "upnp": "UPnP", "upnp_disabled": "UPnP is disabled.", "upnp_enabled": "UPnP is enabled.", - "uptime": "Uptime", "url": "URL", - "usage": "Usage", - "used": "Used", "user_email": "Email", "user_emailaliases": "Mail aliases", "user_emailforward": "Mail forward", @@ -383,11 +348,9 @@ "users_list": "User list", "users_new": "New user", "users_no": "No users.", - "versions": "Versions", "version": "Version", "view_user_profile": "View %s's profile", "warning_first_user": "You probably need to create a user first.", - "write": "Write", "wrong_password": "Wrong password", "yes": "Yes", "certificate_alert_not_valid": "CRITICAL: Current certificate is not valid! HTTPS won't work at all!", diff --git a/src/views/tools/tools_list.ms b/src/views/tools/tools_list.ms index 1442b625..91923dd3 100644 --- a/src/views/tools/tools_list.ms +++ b/src/views/tools/tools_list.ms @@ -34,10 +34,6 @@

{{t 'advanced'}}

- - -

{{t 'monitoring'}}

-

{{t 'firewall'}}

diff --git a/src/views/tools/tools_monitoring.ms b/src/views/tools/tools_monitoring.ms deleted file mode 100644 index 1593be1b..00000000 --- a/src/views/tools/tools_monitoring.ms +++ /dev/null @@ -1,283 +0,0 @@ -
- -
- -{{#if status}} -
-
-

{{t 'infos'}}

-
-
-
-
{{t 'hostname'}}
-
{{system.infos.hostname}}
-
{{t 'os'}}
-
{{ucwords system.infos.linux_distro}} {{system.infos.platform}} ({{system.infos.os_name}} {{system.infos.os_version}})
-
{{t 'uptime'}}
-
{{system.uptime}}
-
-
-
- -
-
-

{{t 'versions'}}

-
-
-
- {{#each versions}} -
{{@key}}
-
{{version}} ({{repo}})
- {{/each}} -
-
-
- -
- -
-
-

- - {{t 'check'}} -

-
-
-
-
-
{{t 'check_stmp'}}
-
{{network.check.smtp_check}}
-
{{t 'check_mx'}}
-
- {{#if network.check.mx_check.mx0}} -
    - {{#each network.check.mx_check}} -
  • {{this}}
  • - {{/each}} -
- {{else}} - {{network.check.mx_check}} - {{/if}} -
-
-
-
-
- -
-
-

- - {{t 'system'}} -

-
-
-
- -
-

{{t 'memory'}}

-

{{t 'ram'}}

- - - - - - - - - - - - - -
{{t 'used'}}{{humanSize system.memory.ram.used}} ({{system.memory.ram.percent}} %)
{{t 'free'}}{{humanSize system.memory.ram.free}}
{{t 'total'}}{{humanSize system.memory.ram.total}}
- -

{{t 'swap'}}

- - - - - - - - - - - - - -
{{t 'used'}}{{humanSize system.memory.swap.used}} ({{system.memory.swap.percent}} %)
{{t 'free'}}{{humanSize system.memory.swap.free}}
{{t 'total'}}{{humanSize system.memory.swap.total}}
-
- -
-

{{t 'cpu_load'}}

- - - - - - - - - - - - - -
{{t 'count_min' "1"}}{{system.cpu.load.min1}}
{{t 'count_min' "5"}}{{system.cpu.load.min5}}
{{t 'count_min' "15"}}{{system.cpu.load.min15}}
-
- -
-

{{t 'process'}}

- - - - - - - - - - - - - -
{{t 'running'}}{{system.process.running}}
{{t 'sleeping'}}{{system.process.sleeping}}
{{t 'total'}}{{system.process.total}}
-
-
-
-
- -
-
-

- - {{t 'network'}} -

-
-
-
- {{t 'public_ip'}}{{network.infos.public_ip}} -
- {{t 'gateway'}}{{network.infos.gateway}} - -

{{t 'local_ip'}}

- - - - - - - - - - {{#each network.infos.local_ip}} - - - - - - {{/each}} - -
{{t 'interface'}}{{t 'ipv4'}}{{t 'ipv6'}}
{{@key}}{{ ipv4 }}{{ ipv6 }}
- -

{{t 'usage'}}

- {{#each network.usage}} -
- - - - - - - - - - - - - - - - - - - - -
-

- {{@key}} - {{t 'time_since_update'}}{{humanTime time_since_update}} -

-
{{t 'bit_rate'}}{{t 'cumulative_usage'}}
{{t 'transmission'}}{{bitRate tx time_since_update}}{{humanSize cumulative_tx}}
{{t 'reception'}}{{bitRate rx time_since_update}}{{humanSize cumulative_rx}}
-
- {{/each}} -
-
-
- -
-
-

- - {{t 'disk'}} -

-
-
-
- {{#each disk}} -
-

{{@key}}

-
-
-

{{t 'filesystem'}}

- - - - - - - - - - - - - - - - -
{{t 'fs_type'}}{{ filesystem.fs_type }}
{{t 'mount_point'}}{{ filesystem.mnt_point }}
{{t 'size'}}{{humanSize filesystem.size }}
{{t 'used'}}{{humanSize filesystem.used }}
{{t 'available'}}{{humanSize filesystem.avail }}
-
-
-

{{t 'io'}} {{t 'time_since_update'}}{{humanTime io.time_since_update }}

- - - - - - - -
{{t 'read'}}{{humanSize io.read_bytes }}
{{t 'write'}}{{humanSize io.write_bytes }}
-
-
- {{/each}} -
-
-
- -
- -{{else}} -
- - {{t 'monitoring_disabled'}} -
- {{t 'monitoring_check_glances'}} -
- -{{/if}} From 97420631e8f566e03d8ec77efc22721f2661709b Mon Sep 17 00:00:00 2001 From: ljf Date: Tue, 15 Oct 2019 19:53:35 +0200 Subject: [PATCH 05/34] [fix] Use the new permissions API --- src/bower.json | 2 +- src/gulpfile.js | 2 +- src/js/yunohost/controllers/users.js | 64 +++++++++++----------------- src/views/user/user_list.ms | 2 +- src/views/user/user_permission.ms | 22 +++++----- 5 files changed, 38 insertions(+), 54 deletions(-) diff --git a/src/bower.json b/src/bower.json index 0d0e89f5..1928e289 100644 --- a/src/bower.json +++ b/src/bower.json @@ -5,7 +5,7 @@ "private": true, "dependencies": { "bootstrap": "3.3.6", - "font-awesome": "4.5.0", + "fork-awesome": "1.1.7", "handlebars-helper-intl": "1.1.2", "handlebars": "4.0.11", "sammy": "0.7.6", diff --git a/src/gulpfile.js b/src/gulpfile.js index 5875faf9..e5f183e8 100644 --- a/src/gulpfile.js +++ b/src/gulpfile.js @@ -71,7 +71,7 @@ gulp.task('js-lint', function() { // Fonts gulp.task('fonts', function() { return gulp.src([ - 'bower_components/font-awesome/fonts/*', + 'bower_components/fork-awesome/fonts/*', 'bower_components/source-code-pro/EOT/*.eot', 'bower_components/source-code-pro/OTF/*.otf', 'bower_components/source-code-pro/TTF/*.ttf', diff --git a/src/js/yunohost/controllers/users.js b/src/js/yunohost/controllers/users.js index 3bdfed57..d4fdce45 100644 --- a/src/js/yunohost/controllers/users.js +++ b/src/js/yunohost/controllers/users.js @@ -12,49 +12,33 @@ // List groups and permissions app.get('#/permissions', function (c) { - c.api('/users/groups', function(data_groups) { - //c.api('/users/permissions', function(data_permissions) { + c.api('/users/groups?full&include_primary_groups', function(data_groups) { + c.api('/users', function(data_users) { + console.log(data_users); + console.log(data_groups); + //var perms = data_permissions.permissions; + var specific_perms = {}; + var all_perms = []; + for (var groupname in data_groups.groups) { + var group = data_groups.groups[groupname]; + if (group.members.length == 1 && groupname == group.members[0]) { + specific_perms[groupname] = group; + } + } + console.log(specific_perms); + for (var primary_group in specific_perms) { + delete data_groups.groups[primary_group]; + } + data_groups.groups['all_users'].special = true; + data_groups.groups['visitors'].special = true; data = { - 'groups':[ - { - 'name': 'all_users', - 'all_users': "true", - 'users': ['ljf', 'john', 'camille', 'sam', 'eli', 'bob', 'sandra', - 'aaron', 'mike'], - 'permissions': ['Mail', 'XMPP'] - }, - { - 'name': 'members', - 'users': ['ljf', 'john', 'eli', 'bob', 'sandra', - 'aaron', 'mike'], - 'permissions': ['Mail', 'XMPP', 'Wekan', 'Wordpress (editor)'] - }, - { - 'name':'volunters', - 'users':['ljf', 'toto'], - 'permissions': [] - }, - { - 'name':'admins', - 'users':['ljf', 'toto'], - 'permissions': [] - } - ], - 'users_with_specific_permissions':[ - { - 'username': 'ljf', - 'permissions': ['Nextcloud'] - }, - { - 'username': 'toto', - 'permissions': ['Nextcloud'] - } - ], - 'users': ['ljf', 'toto', 'titi', 'tutu', 'tata'], - 'permissions': ['Mail', 'XMPP', 'Wekan', 'nextcloud'] + 'groups':data_groups.groups, + 'users_with_specific_permissions': specific_perms, + 'users': Object.keys(data_users.users), + 'permissions': all_perms }; c.view('user/user_permission', data); - //}); + }); }); }); diff --git a/src/views/user/user_list.ms b/src/views/user/user_list.ms index 72148055..bbdbde81 100644 --- a/src/views/user/user_list.ms +++ b/src/views/user/user_list.ms @@ -5,7 +5,7 @@
- {{t 'manage_permissions'}} + {{t 'perm_manage_permissions'}} {{t 'users_new'}} diff --git a/src/views/user/user_permission.ms b/src/views/user/user_permission.ms index 431c80a9..d388312c 100644 --- a/src/views/user/user_permission.ms +++ b/src/views/user/user_permission.ms @@ -15,24 +15,24 @@
{{#each groups}}
-