1
0
Fork 0
mirror of https://gitlab.com/bramw/baserow.git synced 2025-04-14 17:18:33 +00:00
bramw_baserow/enterprise/web-frontend/modules/baserow_enterprise/store/authProviderAdmin.js
2022-11-01 08:57:55 +00:00

124 lines
3.4 KiB
JavaScript

import authProviderAdmin from '@baserow_enterprise/services/authProviderAdmin'
function populateProviderType(authProviderType, registry) {
const type = registry.get('authProvider', authProviderType.type)
return type.populate(authProviderType)
}
export const state = () => ({
items: {},
nextProviderId: null,
})
export const mutations = {
SET_ITEMS(state, items) {
state.items = items
},
ADD_ITEM(state, item) {
const authProviderType = item.type
const authProviders = state.items[authProviderType]?.authProviders || []
state.items[authProviderType] = {
...state.items[authProviderType],
authProviders: [item, ...authProviders],
}
},
DELETE_ITEM(state, item) {
const authProviderType = item.type
const authProviders = state.items[authProviderType]?.authProviders || []
state.items[authProviderType] = {
...state.items[authProviderType],
authProviders: authProviders.filter((p) => p.id !== item.id),
}
},
UPDATE_ITEM(state, item) {
const authProviderType = item.type
const authProviders = state.items[authProviderType]?.authProviders || []
state.items[authProviderType] = {
...state.items[authProviderType],
authProviders: authProviders.map((p) => (p.id === item.id ? item : p)),
}
},
SET_NEXT_PROVIDER_ID(state, providerId) {
state.nextProviderId = providerId
},
}
export const actions = {
async fetchAll({ commit }) {
const { data } = await authProviderAdmin(this.$client).fetchAll()
const items = {}
for (const authProviderType of data.auth_provider_types) {
items[authProviderType.type] = populateProviderType(
authProviderType,
this.$registry
)
}
commit('SET_ITEMS', items)
return items
},
async create({ commit, dispatch }, { type, values }) {
const { data: item } = await authProviderAdmin(this.$client).create({
type,
...values,
})
commit('ADD_ITEM', item)
await dispatch('fetchNextProviderId')
return item
},
async update({ commit }, { authProvider, values }) {
const { data: item } = await authProviderAdmin(this.$client).update(
authProvider.id,
values
)
commit('UPDATE_ITEM', item)
return item
},
async delete({ commit }, item) {
await authProviderAdmin(this.$client).delete(item.id)
commit('DELETE_ITEM', item)
},
async fetchNextProviderId({ commit }) {
const { data } = await authProviderAdmin(this.$client).fetchNextProviderId()
const providerId = data.next_provider_id
commit('SET_NEXT_PROVIDER_ID', providerId)
return providerId
},
}
export const getters = {
getAll: (state) => {
return state.items
},
getAllOrdered: (state) => {
const authProviders = []
const authProviderTypesOrdered = Object.values(state.items).sort(
(typeA, typeB) => typeA.order - typeB.order
)
for (const authProviderType of authProviderTypesOrdered) {
if (authProviderType.hasAdminSettings) {
authProviders.push(...authProviderType.authProviders)
}
}
return authProviders
},
getCreatableTypes: (state) => {
const items = []
for (const authProviderType of Object.values(state.items)) {
if (authProviderType.canCreateNewProviders) {
items.push(authProviderType)
}
}
return items
},
getNextProviderId: (state) => {
return state.nextProviderId
},
}
export default {
namespaced: true,
state,
getters,
actions,
mutations,
}