|
|
@@ -134,4 +134,81 @@ export const processGroupsData = (data, userGroup) => {
|
|
|
}
|
|
|
|
|
|
return groupOptions;
|
|
|
-};
|
|
|
+};
|
|
|
+
|
|
|
+// 原来components中的utils.js
|
|
|
+
|
|
|
+export async function getOAuthState() {
|
|
|
+ let path = '/api/oauth/state';
|
|
|
+ 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) {
|
|
|
+ const state = await getOAuthState();
|
|
|
+ if (!state) return;
|
|
|
+ window.open(
|
|
|
+ `https://github.com/login/oauth/authorize?client_id=${github_client_id}&state=${state}&scope=user:email`,
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+export async function onLinuxDOOAuthClicked(linuxdo_client_id) {
|
|
|
+ const state = await getOAuthState();
|
|
|
+ if (!state) return;
|
|
|
+ window.open(
|
|
|
+ `https://connect.linux.do/oauth2/authorize?response_type=code&client_id=${linuxdo_client_id}&state=${state}`,
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+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 [];
|
|
|
+}
|