Refactoring: better naming, to prepare other external authent.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
import type { InitConverseJSParams, ChatIncludeMode, OIDCAuthResult } from 'shared/lib/types'
|
||||
import type { InitConverseJSParams, ChatIncludeMode, ExternalAuthResult } from 'shared/lib/types'
|
||||
import { inIframe } from './lib/utils'
|
||||
import { initDom } from './lib/dom'
|
||||
import {
|
||||
@ -28,7 +28,7 @@ declare global {
|
||||
initConversePlugins: typeof initConversePlugins
|
||||
initConverse: typeof initConverse
|
||||
reconnectConverse?: (room: string) => void
|
||||
oidcGetResult?: (data: OIDCAuthResult) => void
|
||||
externalAuthGetResult?: (data: ExternalAuthResult) => void
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,9 +18,9 @@ class ExternalLoginModal extends BaseModal {
|
||||
|
||||
onHide () {
|
||||
super.onHide()
|
||||
// kill the oidcGetResult handler if still there
|
||||
// kill the externalAuthGetResult handler if still there
|
||||
try {
|
||||
if (window.oidcGetResult) { window.oidcGetResult() }
|
||||
if (window.externalAuthGetResult) { window.externalAuthGetResult() }
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
|
@ -25,12 +25,12 @@ export const tplExternalLoginModal = (el, o) => {
|
||||
|
||||
const popup = window.open(
|
||||
externalAuthOIDCUrl,
|
||||
'livechat-oidc',
|
||||
'livechat-external-auth',
|
||||
'popup'
|
||||
)
|
||||
|
||||
window.oidcGetResult = (data) => {
|
||||
window.oidcGetResult = undefined
|
||||
window.externalAuthGetResult = (data) => {
|
||||
window.externalAuthGetResult = undefined
|
||||
|
||||
if (!data) {
|
||||
// special case: when this modal is closed, used to close the popup
|
||||
@ -38,17 +38,17 @@ export const tplExternalLoginModal = (el, o) => {
|
||||
return
|
||||
}
|
||||
|
||||
console.log('Received an OIDC authentication result...', data)
|
||||
console.log('Received an external authentication result...', data)
|
||||
if (!data.ok) {
|
||||
// eslint-disable-next-line no-undef
|
||||
el.external_auth_oidc_alert_message = __(LOC_login_external_oidc_alert_message) +
|
||||
el.external_auth_oidc_alert_message = __(LOC_login_external_auth_alert_message) +
|
||||
(data.message ? ` (${data.message})` : '')
|
||||
return
|
||||
}
|
||||
|
||||
console.info('Got external account information', data)
|
||||
// Storing the token in sessionStorage.
|
||||
window.sessionStorage.setItem('peertube-plugin-livechat-oidc-token', data.token)
|
||||
window.sessionStorage.setItem('peertube-plugin-livechat-external-auth-oidc-token', data.token)
|
||||
|
||||
const reconnectMode = api.settings.get('livechat_external_auth_reconnect_mode')
|
||||
if (reconnectMode === 'button-close-open') {
|
||||
|
@ -9,7 +9,7 @@ interface AuthHeader { [key: string]: string }
|
||||
|
||||
async function getLocalAuthentInfos (
|
||||
authenticationUrl: string,
|
||||
tryOIDC: boolean,
|
||||
tryExternalAuth: boolean,
|
||||
peertubeAuthHeader?: AuthHeader | null
|
||||
): Promise<false | AuthentInfos> {
|
||||
try {
|
||||
@ -34,7 +34,7 @@ async function getLocalAuthentInfos (
|
||||
const refreshToken = window.localStorage.getItem('refresh_token') ?? ''
|
||||
if (tokenType === '' && accessToken === '' && refreshToken === '') {
|
||||
console.info('User seems not to be logged in.')
|
||||
// We must continue, for OIDC workflow.
|
||||
// We must continue, for External Auth workflow.
|
||||
peertubeAuthHeader = null
|
||||
} else {
|
||||
peertubeAuthHeader = {
|
||||
@ -43,16 +43,16 @@ async function getLocalAuthentInfos (
|
||||
}
|
||||
}
|
||||
|
||||
let oidcHeaders: any
|
||||
// When user has used the External OIDC mechanisme to create an account, we got a token in sessionStorage.
|
||||
if (tryOIDC && !peertubeAuthHeader && window.sessionStorage) {
|
||||
const token = window.sessionStorage.getItem('peertube-plugin-livechat-oidc-token')
|
||||
let externalAuthHeaders: any
|
||||
// When user has used the External Authentication mechanism to create an account, we got a token in sessionStorage.
|
||||
if (tryExternalAuth && !peertubeAuthHeader && window.sessionStorage) {
|
||||
const token = window.sessionStorage.getItem('peertube-plugin-livechat-external-auth-oidc-token')
|
||||
if (token && (typeof token === 'string')) {
|
||||
oidcHeaders = { 'X-Peertube-Plugin-Livechat-OIDC-Token': token }
|
||||
externalAuthHeaders = { 'X-Peertube-Plugin-Livechat-External-Auth-OIDC-Token': token }
|
||||
}
|
||||
}
|
||||
|
||||
if (peertubeAuthHeader === null && oidcHeaders === undefined) {
|
||||
if (peertubeAuthHeader === null && externalAuthHeaders === undefined) {
|
||||
console.info('User is not logged in.')
|
||||
return false
|
||||
}
|
||||
@ -63,7 +63,7 @@ async function getLocalAuthentInfos (
|
||||
Object.assign(
|
||||
{},
|
||||
peertubeAuthHeader ?? {},
|
||||
oidcHeaders ?? {},
|
||||
externalAuthHeaders ?? {},
|
||||
{
|
||||
'content-type': 'application/json;charset=UTF-8'
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ export const livechatSpecificsPlugin = {
|
||||
if (!result) { return }
|
||||
|
||||
// Deleting access token in sessionStorage.
|
||||
window.sessionStorage.removeItem('peertube-plugin-livechat-oidc-token')
|
||||
window.sessionStorage.removeItem('peertube-plugin-livechat-external-auth-oidc-token')
|
||||
|
||||
const reconnectMode = _converse.api.settings.get('livechat_external_auth_reconnect_mode')
|
||||
if (reconnectMode === 'button-close-open') {
|
||||
|
@ -14,7 +14,7 @@ const locKeys = [
|
||||
'login_remote_peertube_video_not_found',
|
||||
'login_remote_peertube_video_not_found_try_anyway',
|
||||
'login_remote_peertube_video_not_found_try_anyway_button',
|
||||
'login_external_oidc_alert_message'
|
||||
'login_external_auth_alert_message'
|
||||
]
|
||||
|
||||
module.exports = locKeys
|
||||
|
Reference in New Issue
Block a user