first commit
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import {
|
||||
Actions,
|
||||
ActionSetData,
|
||||
ActionSetLoading,
|
||||
ActionMakePrimary,
|
||||
ActionDeleteEmail,
|
||||
ActionSetEmailAffiliationBeingEdited,
|
||||
ActionUpdateAffiliation,
|
||||
} from '../context/user-email-context'
|
||||
import { UserEmailData } from '../../../../../types/user-email'
|
||||
import { Nullable } from '../../../../../types/utils'
|
||||
import { Affiliation } from '../../../../../types/affiliation'
|
||||
|
||||
export const setData = (data: UserEmailData[]): ActionSetData => ({
|
||||
type: Actions.SET_DATA,
|
||||
payload: data,
|
||||
})
|
||||
|
||||
export const setLoading = (flag: boolean): ActionSetLoading => ({
|
||||
type: Actions.SET_LOADING_STATE,
|
||||
payload: flag,
|
||||
})
|
||||
|
||||
export const makePrimary = (
|
||||
email: UserEmailData['email']
|
||||
): ActionMakePrimary => ({
|
||||
type: Actions.MAKE_PRIMARY,
|
||||
payload: email,
|
||||
})
|
||||
|
||||
export const deleteEmail = (
|
||||
email: UserEmailData['email']
|
||||
): ActionDeleteEmail => ({
|
||||
type: Actions.DELETE_EMAIL,
|
||||
payload: email,
|
||||
})
|
||||
|
||||
export const setEmailAffiliationBeingEdited = (
|
||||
email: Nullable<UserEmailData['email']>
|
||||
): ActionSetEmailAffiliationBeingEdited => ({
|
||||
type: Actions.SET_EMAIL_AFFILIATION_BEING_EDITED,
|
||||
payload: email,
|
||||
})
|
||||
|
||||
export const updateAffiliation = (
|
||||
email: UserEmailData['email'],
|
||||
role: Affiliation['role'],
|
||||
department: Affiliation['department']
|
||||
): ActionUpdateAffiliation => ({
|
||||
type: Actions.UPDATE_AFFILIATION,
|
||||
payload: { email, role, department },
|
||||
})
|
@@ -0,0 +1,22 @@
|
||||
import { State } from '../context/user-email-context'
|
||||
import { UserEmailData } from '../../../../../types/user-email'
|
||||
|
||||
export const inReconfirmNotificationPeriod = (userEmailData: UserEmailData) => {
|
||||
return userEmailData.affiliation?.inReconfirmNotificationPeriod
|
||||
}
|
||||
|
||||
export const institutionAlreadyLinked = (
|
||||
state: State,
|
||||
userEmailData: UserEmailData
|
||||
) => {
|
||||
const institutionId = userEmailData.affiliation?.institution.id?.toString()
|
||||
|
||||
return institutionId !== undefined
|
||||
? state.data.linkedInstitutionIds.includes(institutionId)
|
||||
: false
|
||||
}
|
||||
|
||||
export const isChangingAffiliation = (
|
||||
state: State,
|
||||
email: UserEmailData['email']
|
||||
) => state.data.emailAffiliationBeingEdited === email
|
27
services/web/frontend/js/features/settings/utils/sso.ts
Normal file
27
services/web/frontend/js/features/settings/utils/sso.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import getMeta from '../../../utils/meta'
|
||||
import { DomainInfo } from '../components/emails/add-email/input'
|
||||
import { Institution } from '../../../../../types/institution'
|
||||
|
||||
export const ssoAvailableForDomain = (
|
||||
domain: DomainInfo | null
|
||||
): domain is DomainInfo => {
|
||||
const { hasSamlBeta, hasSamlFeature } = getMeta('ol-ExposedSettings')
|
||||
if (!hasSamlFeature || !domain || !domain.confirmed || !domain.university) {
|
||||
return false
|
||||
}
|
||||
if (domain.university.ssoEnabled) {
|
||||
return true
|
||||
}
|
||||
return Boolean(hasSamlBeta && domain.university.ssoBeta)
|
||||
}
|
||||
|
||||
export const ssoAvailableForInstitution = (institution: Institution | null) => {
|
||||
const { hasSamlBeta, hasSamlFeature } = getMeta('ol-ExposedSettings')
|
||||
if (!hasSamlFeature || !institution || !institution.confirmed) {
|
||||
return false
|
||||
}
|
||||
if (institution.ssoEnabled) {
|
||||
return true
|
||||
}
|
||||
return hasSamlBeta && institution.ssoBeta
|
||||
}
|
Reference in New Issue
Block a user