feat: add Sense identity RBAC and audit (#22)
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import * as identityApi from '../../api/sense/identity'
|
||||
|
||||
function loadPrincipal() {
|
||||
try {
|
||||
return JSON.parse(window.sessionStorage.getItem('sense_session'))
|
||||
} catch {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state: () => ({ principal: loadPrincipal() }),
|
||||
getters: {
|
||||
permissions: (state) => state.principal?.permissions || [],
|
||||
hasPermission: (state) => (permission) => (state.principal?.permissions || []).includes(permission)
|
||||
},
|
||||
mutations: {
|
||||
setPrincipal(state, principal) {
|
||||
state.principal = principal
|
||||
if (principal) window.sessionStorage.setItem('sense_session', JSON.stringify(principal))
|
||||
else window.sessionStorage.removeItem('sense_session')
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
async login({ commit }, credentials) {
|
||||
const principal = await identityApi.login(credentials)
|
||||
commit('setPrincipal', principal)
|
||||
return principal
|
||||
},
|
||||
async refresh({ commit }) {
|
||||
const principal = await identityApi.currentUser()
|
||||
commit('setPrincipal', principal)
|
||||
return principal
|
||||
},
|
||||
async logout({ commit }) {
|
||||
try {
|
||||
await identityApi.logout()
|
||||
} finally {
|
||||
commit('setPrincipal', null)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user