diff --git a/src/store/getters.js b/src/store/getters.js index a287712ddb89645304ad06dab251cd12ced6aaa9..83621ac6b48b48882e1fbc3751125360cfc1a5ab 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -11,6 +11,7 @@ const getters = { introduction: state => state.user.introduction, status: state => state.user.status, roles: state => state.user.roles, + privileges: state => state.user.privileges, setting: state => state.user.setting, permission_routers: state => state.permission.routers, addRouters: state => state.permission.addRouters, diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 7b98ed58d0309ccdd4aa6f2337683a31e930800f..a070a2e9a3416093cdad782d21b63c33b7424179 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -45,6 +45,9 @@ const user = { SET_ROLES: (state, roles) => { state.roles = roles }, + SET_PRIVILEGES: (state, privileges) => { + state.privileges = privileges + }, SET_ID: (state, id) => { state.id = id }, @@ -82,6 +85,8 @@ const user = { return new Promise((resolve, reject) => { getUserInfo(state.token, state.authHost).then(response => { const data = response.data + const is_admin = data.pleroma && data.pleroma.is_admin + const is_privileged = data.pleroma.privileges && data.pleroma.privileges.length !== 0 const message = '<span>This user doesn\`t have admin rights. Try another credentials or see the </span>' + '<u><a target="_blank" href="https://docs.pleroma.social/backend/administration/CLI_tasks/user/#set-the-value-of-the-given-users-settings">docs</a></u>' + '<span> to find out how to make this user an admin</span>' @@ -90,8 +95,11 @@ const user = { reject('Verification failed, please login again.') } - if (data.pleroma && data.pleroma.is_admin) { - commit('SET_ROLES', ['admin']) + if (is_admin || is_privileged) { + if (is_admin) { + commit('SET_ROLES', ['admin']) + } + commit('SET_PRIVILEGES', data.pleroma.privileges) } else { reject(message) }