| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| import { API, showError } from '../helpers'; |
|
|
| export async function getOAuthState() { |
| let path = '/api/oauth/state'; |
| |
| |
| let statusFromStorage = localStorage.getItem('status'); |
| let affEnabled = false; |
| if (statusFromStorage) { |
| statusFromStorage = JSON.parse(statusFromStorage); |
| affEnabled = statusFromStorage.aff_enabled === true; |
| } |
| |
| |
| if (affEnabled) { |
| let affCode = localStorage.getItem('aff'); |
| if (affCode && affCode.length > 0) { |
| path += `?aff=${affCode}`; |
| } |
| } |
| |
| const res = await API.get(path); |
| const { success, message, data } = res.data; |
| if (success) { |
| return data; |
| } else { |
| showError(message); |
| return ''; |
| } |
| } |
|
|
| export async function onOIDCClicked(auth_url, client_id, openInNewTab = false) { |
| const state = await getOAuthState(); |
| if (!state) return; |
| const redirect_uri = `${window.location.origin}/oauth/oidc`; |
| const response_type = 'code'; |
| const scope = 'openid profile email'; |
| const url = `${auth_url}?client_id=${client_id}&redirect_uri=${redirect_uri}&response_type=${response_type}&scope=${scope}&state=${state}`; |
| if (openInNewTab) { |
| window.open(url); |
| } else { |
| window.location.href = url; |
| } |
| } |
|
|
| export async function onGitHubOAuthClicked(github_client_id, openInNewTab = false) { |
| const state = await getOAuthState(); |
| if (!state) return; |
| const url = `https://github.com/login/oauth/authorize?client_id=${github_client_id}&state=${state}&scope=user:email`; |
| if (openInNewTab) { |
| window.open(url); |
| } else { |
| window.location.href = url; |
| } |
| } |
|
|
| export async function onLinuxDOOAuthClicked(linuxdo_client_id, openInNewTab = false) { |
| const state = await getOAuthState(); |
| if (!state) return; |
| const url = `https://connect.linux.do/oauth2/authorize?response_type=code&client_id=${linuxdo_client_id}&state=${state}`; |
| if (openInNewTab) { |
| window.open(url); |
| } else { |
| window.location.href = url; |
| } |
| } |
|
|
| export async function onIDCFlareOAuthClicked(idcflare_client_id, openInNewTab = false) { |
| const state = await getOAuthState(); |
| if (!state) return; |
| const url = `https://connect.idcflare.com/oauth2/authorize?response_type=code&client_id=${idcflare_client_id}&state=${state}`; |
| if (openInNewTab) { |
| window.open(url); |
| } else { |
| window.location.href = url; |
| } |
| } |
|
|
| let channelModels = undefined; |
| export async function loadChannelModels() { |
| const res = await API.get('/api/models'); |
| const { success, data } = res.data; |
| if (!success) { |
| return; |
| } |
| channelModels = data; |
| localStorage.setItem('channel_models', JSON.stringify(data)); |
| } |
|
|
| export function getChannelModels(type) { |
| if (channelModels !== undefined && type in channelModels) { |
| if (!channelModels[type]) { |
| return []; |
| } |
| return channelModels[type]; |
| } |
| let models = localStorage.getItem('channel_models'); |
| if (!models) { |
| return []; |
| } |
| channelModels = JSON.parse(models); |
| if (type in channelModels) { |
| return channelModels[type]; |
| } |
| return []; |
| } |
|
|