2022-02-13 23:39:27 +08:00
|
|
|
// Copyright 2021 The Casdoor Authors. All Rights Reserved.
|
2021-02-14 16:59:08 +08:00
|
|
|
//
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
|
// You may obtain a copy of the License at
|
|
|
|
//
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
//
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
// limitations under the License.
|
|
|
|
|
2021-03-25 23:22:34 +08:00
|
|
|
import React from "react";
|
|
|
|
import {Alert, Button, message, Result} from "antd";
|
2021-02-14 16:59:08 +08:00
|
|
|
|
|
|
|
export function showMessage(type, text) {
|
|
|
|
if (type === "success") {
|
|
|
|
message.success(text);
|
|
|
|
} else if (type === "error") {
|
|
|
|
message.error(text);
|
|
|
|
}
|
|
|
|
}
|
2021-02-14 22:49:06 +08:00
|
|
|
|
2021-03-25 23:22:34 +08:00
|
|
|
export function renderMessage(msg) {
|
|
|
|
if (msg !== null) {
|
|
|
|
return (
|
|
|
|
<div style={{display: "inline"}}>
|
|
|
|
<Alert
|
|
|
|
message="Login Error"
|
|
|
|
showIcon
|
|
|
|
description={msg}
|
|
|
|
type="error"
|
|
|
|
action={
|
|
|
|
<Button size="small" danger>
|
|
|
|
Detail
|
|
|
|
</Button>
|
|
|
|
}
|
|
|
|
/>
|
|
|
|
</div>
|
2022-07-10 15:45:55 +08:00
|
|
|
);
|
2021-03-25 23:22:34 +08:00
|
|
|
} else {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-03-26 21:58:19 +08:00
|
|
|
export function renderMessageLarge(ths, msg) {
|
2021-03-25 23:22:34 +08:00
|
|
|
if (msg !== null) {
|
|
|
|
return (
|
|
|
|
<div style={{display: "inline"}}>
|
|
|
|
<Result
|
|
|
|
status="error"
|
2021-06-09 20:38:46 +08:00
|
|
|
title="There was a problem signing you in.."
|
2021-03-25 23:22:34 +08:00
|
|
|
subTitle={msg}
|
|
|
|
extra={[
|
2021-06-14 23:23:59 +08:00
|
|
|
<Button type="primary" key="back" onClick={() => {
|
|
|
|
window.history.go(-2);
|
|
|
|
}}>
|
|
|
|
Back
|
2021-03-25 23:22:34 +08:00
|
|
|
</Button>,
|
2021-06-14 23:23:59 +08:00
|
|
|
// <Button key="home" onClick={() => Setting.goToLinkSoft(ths, "/")}>
|
|
|
|
// Home
|
|
|
|
// </Button>,
|
|
|
|
// <Button type="primary" key="signup" onClick={() => Setting.goToLinkSoft(ths, "/signup")}>
|
|
|
|
// Sign Up
|
|
|
|
// </Button>,
|
2021-03-25 23:22:34 +08:00
|
|
|
]}
|
|
|
|
>
|
|
|
|
</Result>
|
|
|
|
</div>
|
2022-07-10 15:45:55 +08:00
|
|
|
);
|
2021-03-25 23:22:34 +08:00
|
|
|
} else {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-07-10 15:45:55 +08:00
|
|
|
function getRefinedValue(value) {
|
|
|
|
return (value === null)? "" : value;
|
2022-01-30 17:58:54 +08:00
|
|
|
}
|
|
|
|
|
2022-07-10 15:45:55 +08:00
|
|
|
export function getCasParameters(params) {
|
2022-04-04 00:09:04 +08:00
|
|
|
const queries = (params !== undefined) ? params : new URLSearchParams(window.location.search);
|
2022-07-10 15:45:55 +08:00
|
|
|
const service = getRefinedValue(queries.get("service"));
|
|
|
|
const renew = getRefinedValue(queries.get("renew"));
|
|
|
|
const gateway = getRefinedValue(queries.get("gateway"));
|
2022-04-04 00:09:04 +08:00
|
|
|
return {
|
|
|
|
service: service,
|
|
|
|
renew: renew,
|
|
|
|
gateway: gateway,
|
2022-07-10 15:45:55 +08:00
|
|
|
};
|
2022-04-04 00:09:04 +08:00
|
|
|
}
|
|
|
|
|
2021-03-21 13:45:55 +08:00
|
|
|
export function getOAuthGetParameters(params) {
|
|
|
|
const queries = (params !== undefined) ? params : new URLSearchParams(window.location.search);
|
2022-01-30 17:58:54 +08:00
|
|
|
const clientId = getRefinedValue(queries.get("client_id"));
|
|
|
|
const responseType = getRefinedValue(queries.get("response_type"));
|
|
|
|
const redirectUri = getRefinedValue(queries.get("redirect_uri"));
|
|
|
|
const scope = getRefinedValue(queries.get("scope"));
|
|
|
|
const state = getRefinedValue(queries.get("state"));
|
2022-04-08 23:06:48 +08:00
|
|
|
const nonce = getRefinedValue(queries.get("nonce"));
|
|
|
|
const challengeMethod = getRefinedValue(queries.get("code_challenge_method"));
|
|
|
|
const codeChallenge = getRefinedValue(queries.get("code_challenge"));
|
|
|
|
const samlRequest = getRefinedValue(queries.get("SAMLRequest"));
|
|
|
|
const relayState = getRefinedValue(queries.get("RelayState"));
|
|
|
|
|
|
|
|
if ((clientId === undefined || clientId === null || clientId === "") && (samlRequest === "" || samlRequest === undefined)) {
|
2021-08-01 11:20:06 +08:00
|
|
|
// login
|
2021-03-20 16:51:10 +08:00
|
|
|
return null;
|
|
|
|
} else {
|
2021-08-01 11:20:06 +08:00
|
|
|
// code
|
2021-03-20 16:51:10 +08:00
|
|
|
return {
|
|
|
|
clientId: clientId,
|
|
|
|
responseType: responseType,
|
|
|
|
redirectUri: redirectUri,
|
|
|
|
scope: scope,
|
|
|
|
state: state,
|
2021-12-15 21:42:16 +08:00
|
|
|
nonce: nonce,
|
2022-01-21 09:29:19 +08:00
|
|
|
challengeMethod: challengeMethod,
|
|
|
|
codeChallenge: codeChallenge,
|
2022-04-08 23:06:48 +08:00
|
|
|
samlRequest: samlRequest,
|
|
|
|
relayState: relayState,
|
2021-03-20 16:51:10 +08:00
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
2021-03-21 13:45:55 +08:00
|
|
|
|
2021-03-21 16:05:00 +08:00
|
|
|
export function getQueryParamsToState(applicationName, providerName, method) {
|
|
|
|
let query = window.location.search;
|
|
|
|
query = `${query}&application=${applicationName}&provider=${providerName}&method=${method}`;
|
2021-04-19 01:14:41 +08:00
|
|
|
if (method === "link") {
|
|
|
|
query = `${query}&from=${window.location.pathname}`;
|
|
|
|
}
|
2021-03-21 13:45:55 +08:00
|
|
|
return btoa(query);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function stateToGetQueryParams(state) {
|
|
|
|
return atob(state);
|
|
|
|
}
|