forked from AkkomaGang/admin-fe
Merge branch 'feature/require-mailer-to-reset-password' into 'master'
mailerEnabled must be set to `true` in order to require password reset See merge request pleroma/admin-fe!51
This commit is contained in:
commit
e500401698
14 changed files with 58 additions and 4 deletions
|
@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||
|
||||
## Unreleased
|
||||
|
||||
### Changed
|
||||
|
||||
- `mailerEnabled` must be set to `true` in order to require password reset (password reset currently only works via email)
|
||||
|
||||
## [1.2.0] - 2019-09-27
|
||||
|
||||
### Added
|
||||
|
|
9
src/api/__mocks__/nodeInfo.js
Normal file
9
src/api/__mocks__/nodeInfo.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
export async function getNodeInfo(authHost) {
|
||||
const data = {
|
||||
metadata: {
|
||||
mailerEnabled: true
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.resolve({ data })
|
||||
}
|
10
src/api/nodeInfo.js
Normal file
10
src/api/nodeInfo.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
import request from '@/utils/request'
|
||||
import { baseName } from './utils'
|
||||
|
||||
export async function getNodeInfo(authHost) {
|
||||
return await request({
|
||||
baseURL: baseName(authHost),
|
||||
url: `/nodeinfo/2.0.json`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
const isLocalhost = (instanceName) =>
|
||||
instanceName.startsWith('localhost:') || instanceName.startsWith('127.0.0.1:')
|
||||
|
||||
export const baseName = (instanceName) => {
|
||||
export const baseName = (instanceName = 'localhost') => {
|
||||
if (instanceName.match(/https?:\/\//)) {
|
||||
return instanceName
|
||||
} else {
|
||||
|
|
|
@ -215,6 +215,7 @@ export default {
|
|||
addTagForMultipleUsersConfirmation: 'Are you sure you want to apply tag to all selected users?',
|
||||
removeTagFromMultipleUsersConfirmation: 'Are you sure you want to remove tag from all selected users?',
|
||||
requirePasswordResetConfirmation: 'Are you sure you want to require password reset for all selected users?',
|
||||
mailerMustBeEnabled: 'To require user\'s password reset you must enable mailer.',
|
||||
ok: 'Okay',
|
||||
completed: 'Completed',
|
||||
cancel: 'Cancel',
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { loginByUsername, getUserInfo } from '@/api/login'
|
||||
import { getNodeInfo } from '@/api/nodeInfo'
|
||||
import { getToken, setToken, removeToken, getAuthHost, setAuthHost, removeAuthHost } from '@/utils/auth'
|
||||
|
||||
const user = {
|
||||
|
@ -15,7 +16,8 @@ const user = {
|
|||
roles: [],
|
||||
setting: {
|
||||
articlePlatform: []
|
||||
}
|
||||
},
|
||||
nodeInfo: {}
|
||||
},
|
||||
|
||||
mutations: {
|
||||
|
@ -48,6 +50,9 @@ const user = {
|
|||
},
|
||||
SET_AUTH_HOST: (state, authHost) => {
|
||||
state.authHost = authHost
|
||||
},
|
||||
SET_NODE_INFO: (state, nodeInfo) => {
|
||||
state.nodeInfo = nodeInfo
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -67,7 +72,11 @@ const user = {
|
|||
})
|
||||
})
|
||||
},
|
||||
async GetNodeInfo({ commit, state }) {
|
||||
const nodeInfo = await getNodeInfo(state.authHost)
|
||||
|
||||
commit('SET_NODE_INFO', nodeInfo.data)
|
||||
},
|
||||
GetUserInfo({ commit, state }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getUserInfo(state.token, state.authHost).then(response => {
|
||||
|
|
|
@ -98,10 +98,11 @@ const users = {
|
|||
async RequirePasswordReset({ commit, getters, state }, user) {
|
||||
await requirePasswordReset(user.nickname, getters.authHost, getters.token)
|
||||
},
|
||||
async FetchUsers({ commit, state, getters }, { page }) {
|
||||
async FetchUsers({ commit, state, getters, dispatch }, { page }) {
|
||||
commit('SET_LOADING', true)
|
||||
const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()
|
||||
const response = await fetchUsers(filters, getters.authHost, getters.token, page)
|
||||
await dispatch('GetNodeInfo')
|
||||
loadUsers(commit, page, response.data)
|
||||
},
|
||||
async GetPasswordResetToken({ commit, state, getters }, nickname) {
|
||||
|
|
|
@ -10,7 +10,7 @@ const service = axios.create({
|
|||
service.interceptors.response.use(
|
||||
response => response,
|
||||
error => {
|
||||
console.log('Error ' + error)
|
||||
console.log(`Error ${error}`)
|
||||
console.log(error.response.data)
|
||||
|
||||
// If there's an "error" property in the json, use it
|
||||
|
|
|
@ -273,6 +273,14 @@ export default {
|
|||
)
|
||||
},
|
||||
requirePasswordReset() {
|
||||
const mailerEnabled = this.$store.state.user.nodeInfo.metadata.mailerEnabled
|
||||
|
||||
if (!mailerEnabled) {
|
||||
this.$alert(this.$t('users.mailerMustBeEnabled'), 'Error', { type: 'error' })
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
const { requirePasswordReset } = this.mappers()
|
||||
this.confirmMessage(
|
||||
this.$t('users.requirePasswordResetConfirmation'),
|
||||
|
|
|
@ -265,6 +265,14 @@ export default {
|
|||
this.$store.dispatch('GetPasswordResetToken', nickname)
|
||||
},
|
||||
requirePasswordReset(nickname) {
|
||||
const mailerEnabled = this.$store.state.user.nodeInfo.metadata.mailerEnabled
|
||||
|
||||
if (!mailerEnabled) {
|
||||
this.$alert(this.$t('users.mailerMustBeEnabled'), 'Error', { type: 'error' })
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
this.$store.dispatch('RequirePasswordReset', { nickname })
|
||||
},
|
||||
handleDeactivation({ nickname }) {
|
||||
|
|
|
@ -16,6 +16,7 @@ localVue.use(Vuex)
|
|||
localVue.use(VueRouter)
|
||||
localVue.use(Element)
|
||||
|
||||
jest.mock('@/api/nodeInfo')
|
||||
jest.mock('@/api/login')
|
||||
|
||||
describe('Login', () => {
|
||||
|
|
|
@ -14,6 +14,7 @@ const localVue = createLocalVue()
|
|||
localVue.use(Vuex)
|
||||
localVue.use(Element)
|
||||
|
||||
jest.mock('@/api/nodeInfo')
|
||||
jest.mock('@/api/users')
|
||||
|
||||
describe('Search and filter users', () => {
|
||||
|
|
|
@ -13,6 +13,7 @@ const localVue = createLocalVue()
|
|||
localVue.use(Vuex)
|
||||
localVue.use(Element)
|
||||
|
||||
jest.mock('@/api/nodeInfo')
|
||||
jest.mock('@/api/users')
|
||||
|
||||
describe('Apply users actions to multiple users', () => {
|
||||
|
|
|
@ -13,6 +13,7 @@ const localVue = createLocalVue()
|
|||
localVue.use(Vuex)
|
||||
localVue.use(Element)
|
||||
|
||||
jest.mock('@/api/nodeInfo')
|
||||
jest.mock('@/api/users')
|
||||
|
||||
describe('Filters users', () => {
|
||||
|
|
Loading…
Reference in a new issue