auth_flow.js (1894B)
- const PASSWORD_STRATEGY = 'password'
- const TOKEN_STRATEGY = 'token'
- // MFA strategies
- const TOTP_STRATEGY = 'totp'
- const RECOVERY_STRATEGY = 'recovery'
- // initial state
- const state = {
- settings: {},
- strategy: PASSWORD_STRATEGY,
- initStrategy: PASSWORD_STRATEGY // default strategy from config
- }
- const resetState = (state) => {
- state.strategy = state.initStrategy
- state.settings = {}
- }
- // getters
- const getters = {
- settings: (state, getters) => {
- return state.settings
- },
- requiredPassword: (state, getters, rootState) => {
- return state.strategy === PASSWORD_STRATEGY
- },
- requiredToken: (state, getters, rootState) => {
- return state.strategy === TOKEN_STRATEGY
- },
- requiredTOTP: (state, getters, rootState) => {
- return state.strategy === TOTP_STRATEGY
- },
- requiredRecovery: (state, getters, rootState) => {
- return state.strategy === RECOVERY_STRATEGY
- }
- }
- // mutations
- const mutations = {
- setInitialStrategy (state, strategy) {
- if (strategy) {
- state.initStrategy = strategy
- state.strategy = strategy
- }
- },
- requirePassword (state) {
- state.strategy = PASSWORD_STRATEGY
- },
- requireToken (state) {
- state.strategy = TOKEN_STRATEGY
- },
- requireMFA (state, { settings }) {
- state.settings = settings
- state.strategy = TOTP_STRATEGY // default strategy of MFA
- },
- requireRecovery (state) {
- state.strategy = RECOVERY_STRATEGY
- },
- requireTOTP (state) {
- state.strategy = TOTP_STRATEGY
- },
- abortMFA (state) {
- resetState(state)
- }
- }
- // actions
- const actions = {
- // eslint-disable-next-line camelcase
- async login ({ state, dispatch, commit }, { access_token }) {
- commit('setToken', access_token, { root: true })
- await dispatch('loginUser', access_token, { root: true })
- resetState(state)
- }
- }
- export default {
- namespaced: true,
- state,
- getters,
- mutations,
- actions
- }