mailerEnabled must be set to true in order to require password reset (password reset currently only works via email)

This commit is contained in:
Maxim Filippov 2019-09-27 18:32:14 +03:00
parent 6290d06e20
commit 8956e68fa1
8 changed files with 44 additions and 3 deletions

View file

@ -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

10
src/api/nodeInfo.js Normal file
View 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'
})
}

View file

@ -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 {

View file

@ -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',

View file

@ -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 => {

View file

@ -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) {

View file

@ -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'),

View file

@ -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 }) {