diff --git a/app/src/helpers/dataStore.js b/app/src/helpers/dataStore.js index 1d2ac4fa..9d59cc27 100644 --- a/app/src/helpers/dataStore.js +++ b/app/src/helpers/dataStore.js @@ -20,7 +20,7 @@ export default { }, 'ADD_USERS' (state, user) { - // FIXME will trigger an error if first created user + if (state.users === undefined) state.users = {} Vue.set(state.users, user.username, user) }, @@ -47,6 +47,12 @@ export default { state.groups = groups }, + 'ADD_GROUPS' (state, { name }) { + if (state.groups !== undefined) { + Vue.set(state.groups, name, { members: [], permissions: [] }) + } + }, + 'SET_PERMISSIONS' (state, permissions) { state.permissions = permissions } @@ -68,7 +74,7 @@ export default { 'FETCH_ALL' ({ state, commit }, queries) { return Promise.all(queries.map(({ uri, param, storeKey = uri, force = false }) => { const currentState = param ? state[storeKey][param] : state[storeKey] - // if data has already been queried, simply return + // if data has already been queried, simply return the state as cached if (currentState !== undefined && !force) { return { cached: true, responseData: currentState } } diff --git a/app/src/locales/en.json b/app/src/locales/en.json index 5a01cd8a..ae80af6e 100644 --- a/app/src/locales/en.json +++ b/app/src/locales/en.json @@ -120,9 +120,10 @@ "firewall": "Firewall", "footer_version": "Powered by {ynh} {version} ({repo}).", "form_errors": { - "username_syntax": "Invalid username: Must be lower-case alphanumeric and underscore characters only", - "username_exists": "The user '{user}' already exists", - "email_syntax": "Invalid email: Must be alphanumeric, underscore and dash characters only (e.g. someone@example.com, s0me-1@example.com)" + "email_syntax": "Invalid email: Must be alphanumeric, underscore and dash characters only (e.g. someone@example.com, s0me-1@example.com)", + "groupname_syntax": "Invalid group name: Must be alphanumeric, underscore and space characters only", + "username_exists": "The user '{name}' already exists", + "username_syntax": "Invalid username: Must be lower-case alphanumeric and underscore characters only" }, "form_input_example": "Example: %s", "from_to": "from %s to %s", @@ -223,7 +224,8 @@ "placeholder": { "username": "johndoe", "firstname": "John", - "lastname": "Doe" + "lastname": "Doe", + "groupname": "My group name" }, "logs": "Logs", "logs_operation": "Operations made on system with YunoHost", diff --git a/app/src/views/group/GroupCreate.vue b/app/src/views/group/GroupCreate.vue index 8e67f856..645eb15c 100644 --- a/app/src/views/group/GroupCreate.vue +++ b/app/src/views/group/GroupCreate.vue @@ -1,11 +1,81 @@ diff --git a/app/src/views/user/UserCreate.vue b/app/src/views/user/UserCreate.vue index 2214448b..2fc5c72e 100644 --- a/app/src/views/user/UserCreate.vue +++ b/app/src/views/user/UserCreate.vue @@ -127,6 +127,8 @@ import SplittedMailInput from '@/components/SplittedMailInput' export default { + name: 'UserCreate', + data () { return { form: { @@ -194,7 +196,7 @@ export default { // FIXME check allowed characters error = this.$i18n.t('form_errors.username_syntax') } else if (Object.keys(this.$store.state.data.users).includes(username)) { - error = this.$i18n.t('form_errors.username_exists', { user: username }) + error = this.$i18n.t('form_errors.username_exists', { name: username }) } this.error.username = error this.isValid.username = error === '' ? null : false