feat: add left-side image and improve login page (#1226)

This commit is contained in:
Yaodong Yu
2022-10-22 21:43:41 +08:00
committed by GitHub
parent 19d351d157
commit b0f572c51a
13 changed files with 271 additions and 90 deletions

View File

@ -70,6 +70,7 @@ type Application struct {
SigninHtml string `xorm:"mediumtext" json:"signinHtml"` SigninHtml string `xorm:"mediumtext" json:"signinHtml"`
FormCss string `xorm:"text" json:"formCss"` FormCss string `xorm:"text" json:"formCss"`
FormOffset int `json:"formOffset"` FormOffset int `json:"formOffset"`
FormSideHtml string `xorm:"mediumtext" json:"formSideHtml"`
FormBackgroundUrl string `xorm:"varchar(200)" json:"formBackgroundUrl"` FormBackgroundUrl string `xorm:"varchar(200)" json:"formBackgroundUrl"`
} }

View File

@ -94,6 +94,37 @@
align-items: stretch; align-items: stretch;
} }
.side-image {
display: none;
@media screen and (min-width: 1100px){
display: block;
position: relative;
width: 500px;
border-right: 0.5px solid rgb(196, 203, 215);
}
}
.forget-content{
padding: 10px 100px 20px;
border: 2px solid #ffffff;
border-radius: 7px;
background-color: rgb(255, 255, 255);
box-shadow: 0 0 20px rgba(0, 0, 0, 0.20);
}
.login-panel{
margin-top: 50px;
margin-bottom: 50px;
display: flex;
background-color: rgb(255, 255, 255);
overflow: hidden;
}
.login-form{
text-align: center;
padding: 30px;
}
.login-content { .login-content {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -105,7 +136,9 @@
} }
.loginBackground { .loginBackground {
height: 100%; display: flex;
align-items: center;
flex: 1 1 0;
background: #fff no-repeat; background: #fff no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
background-attachment: fixed; background-attachment: fixed;

View File

@ -32,6 +32,7 @@ import copy from "copy-to-clipboard";
import {Controlled as CodeMirror} from "react-codemirror2"; import {Controlled as CodeMirror} from "react-codemirror2";
import "codemirror/lib/codemirror.css"; import "codemirror/lib/codemirror.css";
require("codemirror/theme/material-darker.css"); require("codemirror/theme/material-darker.css");
require("codemirror/mode/htmlmixed/htmlmixed"); require("codemirror/mode/htmlmixed/htmlmixed");
require("codemirror/mode/xml/xml"); require("codemirror/mode/xml/xml");
@ -39,13 +40,52 @@ require("codemirror/mode/css/css");
const {Option} = Select; const {Option} = Select;
const template = { const template = `<!--template: please copy and paste-->
padding: "30px", <style>
border: "2px solid #ffffff", .login-panel{
borderRadius: "7px", border-radius: 10px;
backgroundColor: "#ffffff", background-color: #ffffff;
boxShadow: " 0px 0px 20px rgba(0, 0, 0, 0.20)", box-shadow: 0 0 20px rgba(0, 0, 0, 0.20);
}; }
</style>
`;
const sideTemplate = `<!--template: please copy and paste-->
<style>
.left-model{
text-align: center;
padding: 30px;
background-color: #8ca0ed;
position: absolute;
transform: none;
width: 100%;
height: 100%;
}
.side-logo{
display: flex;
align-items: center;
}
.side-logo span {
font-family: Montserrat, sans-serif;
font-weight: 900;
font-size: 2.4rem;
line-height: 1.3;
margin-left: 16px;
color: #404040;
}
.img{
max-width: none;
margin: 41px 0 13px;
}
</style>
<div class="left-model">
<span class="side-logo"> <img src="https://cdn.casbin.org/img/casdoor-logo_1185x256.png" alt="Casdoor" style="width: 120px">
<span>SSO</span>
</span>
<div class="img">
<img src="https://cdn.casbin.org/img/casbin.svg" alt="Casdoor"/>
</div>
</div>
`;
class ApplicationEditPage extends React.Component { class ApplicationEditPage extends React.Component {
constructor(props) { constructor(props) {
@ -157,7 +197,6 @@ class ApplicationEditPage extends React.Component {
} }
renderApplication() { renderApplication() {
const preview = JSON.stringify(template, null, 2);
return ( return (
<Card size="small" title={ <Card size="small" title={
<div> <div>
@ -562,10 +601,10 @@ class ApplicationEditPage extends React.Component {
</Col> </Col>
<Col span={22} style={(Setting.isMobile()) ? {maxWidth: "100%"} : {}}> <Col span={22} style={(Setting.isMobile()) ? {maxWidth: "100%"} : {}}>
<Row style={{marginTop: "20px"}} > <Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 1}> <Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{Setting.getLabel(i18next.t("general:URL"), i18next.t("general:URL - Tooltip"))} : {Setting.getLabel(i18next.t("general:URL"), i18next.t("general:URL - Tooltip"))} :
</Col> </Col>
<Col span={23} > <Col span={22} >
<Input prefix={<LinkOutlined />} value={this.state.application.formBackgroundUrl} onChange={e => { <Input prefix={<LinkOutlined />} value={this.state.application.formBackgroundUrl} onChange={e => {
this.updateApplicationField("formBackgroundUrl", e.target.value); this.updateApplicationField("formBackgroundUrl", e.target.value);
}} /> }} />
@ -590,8 +629,8 @@ class ApplicationEditPage extends React.Component {
<Col span={22}> <Col span={22}>
<Popover placement="right" content={ <Popover placement="right" content={
<div style={{width: "900px", height: "300px"}} > <div style={{width: "900px", height: "300px"}} >
<CodeMirror value={this.state.application.formCss === "" ? preview : this.state.application.formCss} <CodeMirror value={this.state.application.formCss === "" ? template : this.state.application.formCss}
options={{mode: "css", theme: "material-darker"}} options={{mode: "htmlmixed", theme: "material-darker"}}
onBeforeChange={(editor, data, value) => { onBeforeChange={(editor, data, value) => {
this.updateApplicationField("formCss", value); this.updateApplicationField("formCss", value);
}} }}
@ -609,11 +648,39 @@ class ApplicationEditPage extends React.Component {
{Setting.getLabel(i18next.t("application:From position"), i18next.t("application:From position - Tooltip"))} : {Setting.getLabel(i18next.t("application:From position"), i18next.t("application:From position - Tooltip"))} :
</Col> </Col>
<Col span={22} > <Col span={22} >
<Radio.Group onChange={e => {this.updateApplicationField("formOffset", e.target.value);}} value={this.state.application.formOffset !== 0 ? this.state.application.formOffset : 8}> <Row style={{marginTop: "20px"}} >
<Radio.Button value={2}>left</Radio.Button> <Radio.Group onChange={e => {this.updateApplicationField("formOffset", e.target.value);}} value={this.state.application.formOffset}>
<Radio.Button value={8}>center</Radio.Button> <Radio.Button value={1}>{i18next.t("application:Left")}</Radio.Button>
<Radio.Button value={14}>right</Radio.Button> <Radio.Button value={2}>{i18next.t("application:Center")}</Radio.Button>
<Radio.Button value={3}>{i18next.t("application:Right")}</Radio.Button>
<Radio.Button value={4}>
{i18next.t("application:Enable side panel")}
</Radio.Button>
</Radio.Group> </Radio.Group>
</Row>
{this.state.application.formOffset === 4 ?
<Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 3}>
{Setting.getLabel(i18next.t("application:Side panel HTML"), i18next.t("application:Side panel HTML - Tooltip"))} :
</Col>
<Col span={21} >
<Popover placement="right" content={
<div style={{width: "900px", height: "300px"}} >
<CodeMirror value={this.state.application.formSideHtml === "" ? sideTemplate : this.state.application.formSideHtml}
options={{mode: "htmlmixed", theme: "material-darker"}}
onBeforeChange={(editor, data, value) => {
this.updateApplicationField("formSideHtml", value);
}}
/>
</div>
} title={i18next.t("application:Side panel HTML - Edit")} trigger="click">
<Input value={this.state.application.formSideHtml} style={{marginBottom: "10px"}} onChange={e => {
this.updateApplicationField("formSideHtml", e.target.value);
}} />
</Popover>
</Col>
</Row>
: null}
</Col> </Col>
</Row> </Row>
{ {
@ -707,7 +774,7 @@ class ApplicationEditPage extends React.Component {
<br /> <br />
<div style={{position: "relative", width: "90%", border: "1px solid rgb(217,217,217)", boxShadow: "10px 10px 5px #888888", flexDirection: "column", flex: "auto"}}> <div style={{position: "relative", width: "90%", border: "1px solid rgb(217,217,217)", boxShadow: "10px 10px 5px #888888", flexDirection: "column", flex: "auto"}}>
<PromptPage application={this.state.application} account={this.props.account} /> <PromptPage application={this.state.application} account={this.props.account} />
<div style={maskStyle}></div> <div style={maskStyle} />
</div> </div>
</Col> </Col>
); );

View File

@ -487,6 +487,9 @@ class ForgetPage extends React.Component {
} }
return ( return (
<div className="loginBackground" style={{backgroundImage: Setting.inIframe() || Setting.isMobile() ? null : `url(${application.formBackgroundUrl})`}}>
<CustomGithubCorner />
<div className="login-content forget-content">
<Row> <Row>
<Col span={24} style={{justifyContent: "center"}}> <Col span={24} style={{justifyContent: "center"}}>
<Row> <Row>
@ -495,7 +498,6 @@ class ForgetPage extends React.Component {
{ {
Setting.renderHelmet(application) Setting.renderHelmet(application)
} }
<CustomGithubCorner />
{ {
Setting.renderLogo(application) Setting.renderLogo(application)
} }
@ -542,6 +544,8 @@ class ForgetPage extends React.Component {
</div> </div>
</Col> </Col>
</Row> </Row>
</div>
</div>
); );
} }
} }

View File

@ -139,6 +139,18 @@ class LoginPage extends React.Component {
this.props.onUpdateAccount(account); this.props.onUpdateAccount(account);
} }
parseOffset(offset) {
if (offset === 2 || offset === 4 || Setting.inIframe() || Setting.isMobile()) {
return "0 auto";
}
if (offset === 1) {
return "0 10%";
}
if (offset === 3) {
return "0 60%";
}
}
populateOauthValues(values) { populateOauthValues(values) {
const oAuthParams = Util.getOAuthGetParameters(); const oAuthParams = Util.getOAuthGetParameters();
if (oAuthParams !== null && oAuthParams.responseType !== null && oAuthParams.responseType !== "") { if (oAuthParams !== null && oAuthParams.responseType !== null && oAuthParams.responseType !== "") {
@ -695,16 +707,18 @@ class LoginPage extends React.Component {
); );
} }
const formStyle = Setting.inIframe() ? null : Setting.parseObject(application.formCss);
return ( return (
<div className="loginBackground" style={{backgroundImage: Setting.inIframe() || Setting.isMobile() ? null : `url(${application.formBackgroundUrl})`}}> <div className="loginBackground" style={{backgroundImage: Setting.inIframe() || Setting.isMobile() ? null : `url(${application.formBackgroundUrl})`}}>
<CustomGithubCorner /> <CustomGithubCorner />
<Row> <div className="login-content" style={{margin: this.parseOffset(application.formOffset)}}>
<Col span={8} offset={application.formOffset === 0 || Setting.inIframe() || Setting.isMobile() ? 8 : application.formOffset} style={{display: "flex", justifyContent: "center"}}> {Setting.inIframe() ? null : <div dangerouslySetInnerHTML={{__html: application.formCss}} />}
<div className="login-content"> <div className="login-panel">
<div style={{marginTop: "80px", marginBottom: "50px", textAlign: "center", ...formStyle}}> <SelectLanguageBox id="language-box-corner" style={{top: "50px"}} />
<SelectLanguageBox id="language-box-corner" style={{top: formStyle !== null ? "80px" : "45px", right: formStyle !== null ? "5px" : "-45px"}} /> <div className="side-image" style={{display: application.formOffset !== 4 ? "none" : null}}>
<div dangerouslySetInnerHTML={{__html: application.formSideHtml}} />
</div>
<div className="login-form">
<div >
<div> <div>
{ {
Setting.renderHelmet(application) Setting.renderHelmet(application)
@ -724,8 +738,8 @@ class LoginPage extends React.Component {
</div> </div>
</div> </div>
</div> </div>
</Col> </div>
</Row> </div>
</div> </div>
); );
} }

View File

@ -14,7 +14,7 @@
import React from "react"; import React from "react";
import {Link} from "react-router-dom"; import {Link} from "react-router-dom";
import {Button, Checkbox, Col, Form, Input, Modal, Result, Row} from "antd"; import {Button, Checkbox, Form, Input, Modal, Result} from "antd";
import * as Setting from "../Setting"; import * as Setting from "../Setting";
import * as AuthBackend from "./AuthBackend"; import * as AuthBackend from "./AuthBackend";
import * as ProviderButton from "./ProviderButton"; import * as ProviderButton from "./ProviderButton";
@ -148,6 +148,18 @@ class SignupPage extends React.Component {
this.props.onUpdateAccount(account); this.props.onUpdateAccount(account);
} }
parseOffset(offset) {
if (offset === 2 || offset === 4 || Setting.inIframe() || Setting.isMobile()) {
return "0 auto";
}
if (offset === 1) {
return "0 10%";
}
if (offset === 3) {
return "0 60%";
}
}
onFinish(values) { onFinish(values) {
const application = this.getApplicationObj(); const application = this.getApplicationObj();
values.phonePrefix = application.organizationObj.phonePrefix; values.phonePrefix = application.organizationObj.phonePrefix;
@ -615,17 +627,18 @@ class SignupPage extends React.Component {
); );
} }
const formStyle = Setting.inIframe() ? null : Setting.parseObject(application.formCss);
return ( return (
<div className="loginBackground" style={{backgroundImage: Setting.inIframe() || Setting.isMobile() ? null : `url(${application.formBackgroundUrl})`}}> <div className="loginBackground" style={{backgroundImage: Setting.inIframe() || Setting.isMobile() ? null : `url(${application.formBackgroundUrl})`}}>
<CustomGithubCorner /> <CustomGithubCorner />
&nbsp; <div className="login-content" style={{margin: this.parseOffset(application.formOffset)}}>
<Row> {Setting.inIframe() ? null : <div dangerouslySetInnerHTML={{__html: application.formCss}} />}
<Col span={8} offset={application.formOffset === 0 || Setting.inIframe() || Setting.isMobile() ? 8 : application.formOffset} style={{display: "flex", justifyContent: "center"}} > <div className="login-panel" >
<div className="login-content"> <SelectLanguageBox id="language-box-corner" style={{top: "50px"}} />
<div style={{marginBottom: "10px", textAlign: "center", ...formStyle}}> <div className="side-image" style={{display: application.formOffset !== 4 ? "none" : null}}>
<SelectLanguageBox id="language-box-corner" style={{top: formStyle !== null ? "3px" : "-20px", right: formStyle !== null ? "5px" : "-45px"}} /> <div dangerouslySetInnerHTML={{__html: application.formSideHtml}} />
</div>
<div className="login-form">
<div >
{ {
Setting.renderHelmet(application) Setting.renderHelmet(application)
} }
@ -637,8 +650,8 @@ class SignupPage extends React.Component {
} }
</div> </div>
</div> </div>
</Col> </div>
</Row> </div>
{ {
this.renderModal() this.renderModal()
} }

View File

@ -17,6 +17,7 @@
"Auto signin - Tooltip": "Auto signin - Tooltip", "Auto signin - Tooltip": "Auto signin - Tooltip",
"Background URL": "Background URL", "Background URL": "Background URL",
"Background URL - Tooltip": "Background URL - Tooltip", "Background URL - Tooltip": "Background URL - Tooltip",
"Center": "Center",
"Copy SAML metadata URL": "Copy SAML metadata URL", "Copy SAML metadata URL": "Copy SAML metadata URL",
"Copy prompt page URL": "Copy prompt page URL", "Copy prompt page URL": "Copy prompt page URL",
"Copy signin page URL": "Copy signin page URL", "Copy signin page URL": "Copy signin page URL",
@ -28,6 +29,7 @@
"Enable WebAuthn signin - Tooltip": "Enable WebAuthn signin - Tooltip", "Enable WebAuthn signin - Tooltip": "Enable WebAuthn signin - Tooltip",
"Enable code signin": "Code-Anmeldung aktivieren", "Enable code signin": "Code-Anmeldung aktivieren",
"Enable code signin - Tooltip": "Aktiviere Codeanmeldung - Tooltip", "Enable code signin - Tooltip": "Aktiviere Codeanmeldung - Tooltip",
"Enable side panel": "Enable side panel",
"Enable signin session - Tooltip": "Aktiviere Anmeldesession - Tooltip", "Enable signin session - Tooltip": "Aktiviere Anmeldesession - Tooltip",
"Enable signup": "Anmeldung aktivieren", "Enable signup": "Anmeldung aktivieren",
"Enable signup - Tooltip": "Whether to allow users to sign up", "Enable signup - Tooltip": "Whether to allow users to sign up",
@ -39,6 +41,7 @@
"From position - Tooltip": "From position - Tooltip", "From position - Tooltip": "From position - Tooltip",
"Grant types": "Grant types", "Grant types": "Grant types",
"Grant types - Tooltip": "Grant types - Tooltip", "Grant types - Tooltip": "Grant types - Tooltip",
"Left": "Left",
"New Application": "New Application", "New Application": "New Application",
"Password ON": "Passwort AN", "Password ON": "Passwort AN",
"Password ON - Tooltip": "Whether to allow password login", "Password ON - Tooltip": "Whether to allow password login",
@ -49,9 +52,13 @@
"Redirect URLs - Tooltip": "List of redirect addresses after successful login", "Redirect URLs - Tooltip": "List of redirect addresses after successful login",
"Refresh token expire": "Aktualisierungs-Token läuft ab", "Refresh token expire": "Aktualisierungs-Token läuft ab",
"Refresh token expire - Tooltip": "Aktualisierungs-Token läuft ab - Tooltip", "Refresh token expire - Tooltip": "Aktualisierungs-Token läuft ab - Tooltip",
"Right": "Right",
"SAML metadata": "SAML metadata", "SAML metadata": "SAML metadata",
"SAML metadata - Tooltip": "SAML metadata - Tooltip", "SAML metadata - Tooltip": "SAML metadata - Tooltip",
"SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully", "SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully",
"Side panel HTML": "Side panel HTML",
"Side panel HTML - Edit": "Side panel HTML - Edit",
"Side panel HTML - Tooltip": "Side panel HTML - Tooltip",
"Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser", "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser",
"Signin session": "Anmeldesitzung", "Signin session": "Anmeldesitzung",
"Signup items": "Artikel registrieren", "Signup items": "Artikel registrieren",

View File

@ -17,6 +17,7 @@
"Auto signin - Tooltip": "Auto signin - Tooltip", "Auto signin - Tooltip": "Auto signin - Tooltip",
"Background URL": "Background URL", "Background URL": "Background URL",
"Background URL - Tooltip": "Background URL - Tooltip", "Background URL - Tooltip": "Background URL - Tooltip",
"Center": "Center",
"Copy SAML metadata URL": "Copy SAML metadata URL", "Copy SAML metadata URL": "Copy SAML metadata URL",
"Copy prompt page URL": "Copy prompt page URL", "Copy prompt page URL": "Copy prompt page URL",
"Copy signin page URL": "Copy signin page URL", "Copy signin page URL": "Copy signin page URL",
@ -28,6 +29,7 @@
"Enable WebAuthn signin - Tooltip": "Enable WebAuthn signin - Tooltip", "Enable WebAuthn signin - Tooltip": "Enable WebAuthn signin - Tooltip",
"Enable code signin": "Enable code signin", "Enable code signin": "Enable code signin",
"Enable code signin - Tooltip": "Enable code signin - Tooltip", "Enable code signin - Tooltip": "Enable code signin - Tooltip",
"Enable side panel": "Enable side panel",
"Enable signin session - Tooltip": "Enable signin session - Tooltip", "Enable signin session - Tooltip": "Enable signin session - Tooltip",
"Enable signup": "Enable signup", "Enable signup": "Enable signup",
"Enable signup - Tooltip": "Enable signup - Tooltip", "Enable signup - Tooltip": "Enable signup - Tooltip",
@ -39,6 +41,7 @@
"From position - Tooltip": "From position - Tooltip", "From position - Tooltip": "From position - Tooltip",
"Grant types": "Grant types", "Grant types": "Grant types",
"Grant types - Tooltip": "Grant types - Tooltip", "Grant types - Tooltip": "Grant types - Tooltip",
"Left": "Left",
"New Application": "New Application", "New Application": "New Application",
"Password ON": "Password ON", "Password ON": "Password ON",
"Password ON - Tooltip": "Password ON - Tooltip", "Password ON - Tooltip": "Password ON - Tooltip",
@ -49,9 +52,13 @@
"Redirect URLs - Tooltip": "Redirect URLs - Tooltip", "Redirect URLs - Tooltip": "Redirect URLs - Tooltip",
"Refresh token expire": "Refresh token expire", "Refresh token expire": "Refresh token expire",
"Refresh token expire - Tooltip": "Refresh token expire - Tooltip", "Refresh token expire - Tooltip": "Refresh token expire - Tooltip",
"Right": "Right",
"SAML metadata": "SAML metadata", "SAML metadata": "SAML metadata",
"SAML metadata - Tooltip": "SAML metadata - Tooltip", "SAML metadata - Tooltip": "SAML metadata - Tooltip",
"SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully", "SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully",
"Side panel HTML": "Side panel HTML",
"Side panel HTML - Edit": "Side panel HTML - Edit",
"Side panel HTML - Tooltip": "Side panel HTML - Tooltip",
"Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser", "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser",
"Signin session": "Signin session", "Signin session": "Signin session",
"Signup items": "Signup items", "Signup items": "Signup items",

View File

@ -17,6 +17,7 @@
"Auto signin - Tooltip": "Auto signin - Tooltip", "Auto signin - Tooltip": "Auto signin - Tooltip",
"Background URL": "Background URL", "Background URL": "Background URL",
"Background URL - Tooltip": "Background URL - Tooltip", "Background URL - Tooltip": "Background URL - Tooltip",
"Center": "Center",
"Copy SAML metadata URL": "Copy SAML metadata URL", "Copy SAML metadata URL": "Copy SAML metadata URL",
"Copy prompt page URL": "Copy prompt page URL", "Copy prompt page URL": "Copy prompt page URL",
"Copy signin page URL": "Copy signin page URL", "Copy signin page URL": "Copy signin page URL",
@ -28,6 +29,7 @@
"Enable WebAuthn signin - Tooltip": "Enable WebAuthn signin - Tooltip", "Enable WebAuthn signin - Tooltip": "Enable WebAuthn signin - Tooltip",
"Enable code signin": "Activer la connexion au code", "Enable code signin": "Activer la connexion au code",
"Enable code signin - Tooltip": "Activer la connexion au code - infobulle", "Enable code signin - Tooltip": "Activer la connexion au code - infobulle",
"Enable side panel": "Enable side panel",
"Enable signin session - Tooltip": "Activer la session de connexion - infobulle", "Enable signin session - Tooltip": "Activer la session de connexion - infobulle",
"Enable signup": "Activer l'inscription", "Enable signup": "Activer l'inscription",
"Enable signup - Tooltip": "Whether to allow users to sign up", "Enable signup - Tooltip": "Whether to allow users to sign up",
@ -39,6 +41,7 @@
"From position - Tooltip": "From position - Tooltip", "From position - Tooltip": "From position - Tooltip",
"Grant types": "Grant types", "Grant types": "Grant types",
"Grant types - Tooltip": "Grant types - Tooltip", "Grant types - Tooltip": "Grant types - Tooltip",
"Left": "Left",
"New Application": "New Application", "New Application": "New Application",
"Password ON": "Mot de passe activé", "Password ON": "Mot de passe activé",
"Password ON - Tooltip": "Whether to allow password login", "Password ON - Tooltip": "Whether to allow password login",
@ -49,9 +52,13 @@
"Redirect URLs - Tooltip": "List of redirect addresses after successful login", "Redirect URLs - Tooltip": "List of redirect addresses after successful login",
"Refresh token expire": "Expiration du jeton d'actualisation", "Refresh token expire": "Expiration du jeton d'actualisation",
"Refresh token expire - Tooltip": "Expiration du jeton d'actualisation - infobulle", "Refresh token expire - Tooltip": "Expiration du jeton d'actualisation - infobulle",
"Right": "Right",
"SAML metadata": "SAML metadata", "SAML metadata": "SAML metadata",
"SAML metadata - Tooltip": "SAML metadata - Tooltip", "SAML metadata - Tooltip": "SAML metadata - Tooltip",
"SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully", "SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully",
"Side panel HTML": "Side panel HTML",
"Side panel HTML - Edit": "Side panel HTML - Edit",
"Side panel HTML - Tooltip": "Side panel HTML - Tooltip",
"Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser", "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser",
"Signin session": "Connexion à la session", "Signin session": "Connexion à la session",
"Signup items": "Inscrire des éléments", "Signup items": "Inscrire des éléments",

View File

@ -17,6 +17,7 @@
"Auto signin - Tooltip": "Auto signin - Tooltip", "Auto signin - Tooltip": "Auto signin - Tooltip",
"Background URL": "Background URL", "Background URL": "Background URL",
"Background URL - Tooltip": "Background URL - Tooltip", "Background URL - Tooltip": "Background URL - Tooltip",
"Center": "Center",
"Copy SAML metadata URL": "Copy SAML metadata URL", "Copy SAML metadata URL": "Copy SAML metadata URL",
"Copy prompt page URL": "Copy prompt page URL", "Copy prompt page URL": "Copy prompt page URL",
"Copy signin page URL": "Copy signin page URL", "Copy signin page URL": "Copy signin page URL",
@ -28,6 +29,7 @@
"Enable WebAuthn signin - Tooltip": "Enable WebAuthn signin - Tooltip", "Enable WebAuthn signin - Tooltip": "Enable WebAuthn signin - Tooltip",
"Enable code signin": "コードサインインを有効にする", "Enable code signin": "コードサインインを有効にする",
"Enable code signin - Tooltip": "Enable code signin - Tooltip", "Enable code signin - Tooltip": "Enable code signin - Tooltip",
"Enable side panel": "Enable side panel",
"Enable signin session - Tooltip": "Enable signin session - Tooltip", "Enable signin session - Tooltip": "Enable signin session - Tooltip",
"Enable signup": "サインアップを有効にする", "Enable signup": "サインアップを有効にする",
"Enable signup - Tooltip": "Whether to allow users to sign up", "Enable signup - Tooltip": "Whether to allow users to sign up",
@ -39,6 +41,7 @@
"From position - Tooltip": "From position - Tooltip", "From position - Tooltip": "From position - Tooltip",
"Grant types": "Grant types", "Grant types": "Grant types",
"Grant types - Tooltip": "Grant types - Tooltip", "Grant types - Tooltip": "Grant types - Tooltip",
"Left": "Left",
"New Application": "New Application", "New Application": "New Application",
"Password ON": "パスワードON", "Password ON": "パスワードON",
"Password ON - Tooltip": "Whether to allow password login", "Password ON - Tooltip": "Whether to allow password login",
@ -49,9 +52,13 @@
"Redirect URLs - Tooltip": "List of redirect addresses after successful login", "Redirect URLs - Tooltip": "List of redirect addresses after successful login",
"Refresh token expire": "トークンの更新の期限が切れます", "Refresh token expire": "トークンの更新の期限が切れます",
"Refresh token expire - Tooltip": "トークンの有効期限を更新する - ツールチップ", "Refresh token expire - Tooltip": "トークンの有効期限を更新する - ツールチップ",
"Right": "Right",
"SAML metadata": "SAML metadata", "SAML metadata": "SAML metadata",
"SAML metadata - Tooltip": "SAML metadata - Tooltip", "SAML metadata - Tooltip": "SAML metadata - Tooltip",
"SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully", "SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully",
"Side panel HTML": "Side panel HTML",
"Side panel HTML - Edit": "Side panel HTML - Edit",
"Side panel HTML - Tooltip": "Side panel HTML - Tooltip",
"Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser", "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser",
"Signin session": "サインインセッション", "Signin session": "サインインセッション",
"Signup items": "アイテムの登録", "Signup items": "アイテムの登録",

View File

@ -17,6 +17,7 @@
"Auto signin - Tooltip": "Auto signin - Tooltip", "Auto signin - Tooltip": "Auto signin - Tooltip",
"Background URL": "Background URL", "Background URL": "Background URL",
"Background URL - Tooltip": "Background URL - Tooltip", "Background URL - Tooltip": "Background URL - Tooltip",
"Center": "Center",
"Copy SAML metadata URL": "Copy SAML metadata URL", "Copy SAML metadata URL": "Copy SAML metadata URL",
"Copy prompt page URL": "Copy prompt page URL", "Copy prompt page URL": "Copy prompt page URL",
"Copy signin page URL": "Copy signin page URL", "Copy signin page URL": "Copy signin page URL",
@ -28,6 +29,7 @@
"Enable WebAuthn signin - Tooltip": "Enable WebAuthn signin - Tooltip", "Enable WebAuthn signin - Tooltip": "Enable WebAuthn signin - Tooltip",
"Enable code signin": "Enable code signin", "Enable code signin": "Enable code signin",
"Enable code signin - Tooltip": "Enable code signin - Tooltip", "Enable code signin - Tooltip": "Enable code signin - Tooltip",
"Enable side panel": "Enable side panel",
"Enable signin session - Tooltip": "Enable signin session - Tooltip", "Enable signin session - Tooltip": "Enable signin session - Tooltip",
"Enable signup": "Enable signup", "Enable signup": "Enable signup",
"Enable signup - Tooltip": "Whether to allow users to sign up", "Enable signup - Tooltip": "Whether to allow users to sign up",
@ -39,6 +41,7 @@
"From position - Tooltip": "From position - Tooltip", "From position - Tooltip": "From position - Tooltip",
"Grant types": "Grant types", "Grant types": "Grant types",
"Grant types - Tooltip": "Grant types - Tooltip", "Grant types - Tooltip": "Grant types - Tooltip",
"Left": "Left",
"New Application": "New Application", "New Application": "New Application",
"Password ON": "Password ON", "Password ON": "Password ON",
"Password ON - Tooltip": "Whether to allow password login", "Password ON - Tooltip": "Whether to allow password login",
@ -49,9 +52,13 @@
"Redirect URLs - Tooltip": "List of redirect addresses after successful login", "Redirect URLs - Tooltip": "List of redirect addresses after successful login",
"Refresh token expire": "Refresh token expire", "Refresh token expire": "Refresh token expire",
"Refresh token expire - Tooltip": "Refresh token expire - Tooltip", "Refresh token expire - Tooltip": "Refresh token expire - Tooltip",
"Right": "Right",
"SAML metadata": "SAML metadata", "SAML metadata": "SAML metadata",
"SAML metadata - Tooltip": "SAML metadata - Tooltip", "SAML metadata - Tooltip": "SAML metadata - Tooltip",
"SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully", "SAML metadata URL copied to clipboard successfully": "SAML metadata URL copied to clipboard successfully",
"Side panel HTML": "Side panel HTML",
"Side panel HTML - Edit": "Side panel HTML - Edit",
"Side panel HTML - Tooltip": "Side panel HTML - Tooltip",
"Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser", "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser",
"Signin session": "Signin session", "Signin session": "Signin session",
"Signup items": "Signup items", "Signup items": "Signup items",

View File

@ -17,6 +17,7 @@
"Auto signin - Tooltip": "Auto signin - Tooltip", "Auto signin - Tooltip": "Auto signin - Tooltip",
"Background URL": "Background URL", "Background URL": "Background URL",
"Background URL - Tooltip": "Background URL - Tooltip", "Background URL - Tooltip": "Background URL - Tooltip",
"Center": "Center",
"Copy SAML metadata URL": "Копировать адрес метаданных SAML", "Copy SAML metadata URL": "Копировать адрес метаданных SAML",
"Copy prompt page URL": "Скопировать URL-адрес страницы запроса", "Copy prompt page URL": "Скопировать URL-адрес страницы запроса",
"Copy signin page URL": "Скопировать URL-адрес страницы входа", "Copy signin page URL": "Скопировать URL-адрес страницы входа",
@ -28,6 +29,7 @@
"Enable WebAuthn signin - Tooltip": "Включить вход с WebAuthn - Подсказка", "Enable WebAuthn signin - Tooltip": "Включить вход с WebAuthn - Подсказка",
"Enable code signin": "Включить кодовый вход", "Enable code signin": "Включить кодовый вход",
"Enable code signin - Tooltip": "Включить вход с кодом - Tooltip", "Enable code signin - Tooltip": "Включить вход с кодом - Tooltip",
"Enable side panel": "Enable side panel",
"Enable signin session - Tooltip": "Включить сеанс входа - Подсказка", "Enable signin session - Tooltip": "Включить сеанс входа - Подсказка",
"Enable signup": "Включить регистрацию", "Enable signup": "Включить регистрацию",
"Enable signup - Tooltip": "Whether to allow users to sign up", "Enable signup - Tooltip": "Whether to allow users to sign up",
@ -39,6 +41,7 @@
"From position - Tooltip": "From position - Tooltip", "From position - Tooltip": "From position - Tooltip",
"Grant types": "Виды грантов", "Grant types": "Виды грантов",
"Grant types - Tooltip": "Виды грантов - Подсказка", "Grant types - Tooltip": "Виды грантов - Подсказка",
"Left": "Left",
"New Application": "Новое приложение", "New Application": "Новое приложение",
"Password ON": "Пароль ВКЛ", "Password ON": "Пароль ВКЛ",
"Password ON - Tooltip": "Whether to allow password login", "Password ON - Tooltip": "Whether to allow password login",
@ -49,9 +52,13 @@
"Redirect URLs - Tooltip": "List of redirect addresses after successful login", "Redirect URLs - Tooltip": "List of redirect addresses after successful login",
"Refresh token expire": "Срок действия обновления токена истекает", "Refresh token expire": "Срок действия обновления токена истекает",
"Refresh token expire - Tooltip": "Срок обновления токена истекает - Подсказка", "Refresh token expire - Tooltip": "Срок обновления токена истекает - Подсказка",
"Right": "Right",
"SAML metadata": "Метаданные SAML", "SAML metadata": "Метаданные SAML",
"SAML metadata - Tooltip": "Метаданные SAML - Подсказка", "SAML metadata - Tooltip": "Метаданные SAML - Подсказка",
"SAML metadata URL copied to clipboard successfully": "Адрес метаданных SAML скопирован в буфер обмена", "SAML metadata URL copied to clipboard successfully": "Адрес метаданных SAML скопирован в буфер обмена",
"Side panel HTML": "Side panel HTML",
"Side panel HTML - Edit": "Side panel HTML - Edit",
"Side panel HTML - Tooltip": "Side panel HTML - Tooltip",
"Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL страницы входа успешно скопирован в буфер обмена, пожалуйста, вставьте его в окно инкогнито или другой браузер", "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "URL страницы входа успешно скопирован в буфер обмена, пожалуйста, вставьте его в окно инкогнито или другой браузер",
"Signin session": "Сессия входа", "Signin session": "Сессия входа",
"Signup items": "Элементы регистрации", "Signup items": "Элементы регистрации",

View File

@ -17,6 +17,7 @@
"Auto signin - Tooltip": "当Casdoor存在已登录会话时自动采用该会话进行应用端的登录", "Auto signin - Tooltip": "当Casdoor存在已登录会话时自动采用该会话进行应用端的登录",
"Background URL": "背景图URL", "Background URL": "背景图URL",
"Background URL - Tooltip": "登录页背景图的链接", "Background URL - Tooltip": "登录页背景图的链接",
"Center": "居中",
"Copy SAML metadata URL": "复制SAML元数据URL", "Copy SAML metadata URL": "复制SAML元数据URL",
"Copy prompt page URL": "复制提醒页面URL", "Copy prompt page URL": "复制提醒页面URL",
"Copy signin page URL": "复制登录页面URL", "Copy signin page URL": "复制登录页面URL",
@ -28,6 +29,7 @@
"Enable WebAuthn signin - Tooltip": "是否支持用户在登录页面通过WebAuthn方式登录", "Enable WebAuthn signin - Tooltip": "是否支持用户在登录页面通过WebAuthn方式登录",
"Enable code signin": "启用验证码登录", "Enable code signin": "启用验证码登录",
"Enable code signin - Tooltip": "是否允许用手机或邮箱验证码登录", "Enable code signin - Tooltip": "是否允许用手机或邮箱验证码登录",
"Enable side panel": "启用侧面板",
"Enable signin session - Tooltip": "从应用登录Casdoor后Casdoor是否保持会话", "Enable signin session - Tooltip": "从应用登录Casdoor后Casdoor是否保持会话",
"Enable signup": "启用注册", "Enable signup": "启用注册",
"Enable signup - Tooltip": "是否允许用户注册", "Enable signup - Tooltip": "是否允许用户注册",
@ -39,6 +41,7 @@
"From position - Tooltip": "登录和注册面板的位置", "From position - Tooltip": "登录和注册面板的位置",
"Grant types": "OAuth授权类型", "Grant types": "OAuth授权类型",
"Grant types - Tooltip": "选择允许哪些OAuth协议中的Grant types", "Grant types - Tooltip": "选择允许哪些OAuth协议中的Grant types",
"Left": "居左",
"New Application": "添加应用", "New Application": "添加应用",
"Password ON": "开启密码", "Password ON": "开启密码",
"Password ON - Tooltip": "是否允许密码登录", "Password ON - Tooltip": "是否允许密码登录",
@ -49,9 +52,13 @@
"Redirect URLs - Tooltip": "登录成功后重定向地址列表", "Redirect URLs - Tooltip": "登录成功后重定向地址列表",
"Refresh token expire": "Refresh Token过期", "Refresh token expire": "Refresh Token过期",
"Refresh token expire - Tooltip": "Refresh Token过期时间", "Refresh token expire - Tooltip": "Refresh Token过期时间",
"Right": "居右",
"SAML metadata": "SAML元数据", "SAML metadata": "SAML元数据",
"SAML metadata - Tooltip": "SAML协议的元数据Metadata信息", "SAML metadata - Tooltip": "SAML协议的元数据Metadata信息",
"SAML metadata URL copied to clipboard successfully": "SAML元数据URL已成功复制到剪贴板", "SAML metadata URL copied to clipboard successfully": "SAML元数据URL已成功复制到剪贴板",
"Side panel HTML": "侧面板 HTML",
"Side panel HTML - Edit": "侧面板 HTML - 编辑",
"Side panel HTML - Tooltip": "侧面板 HTML - Tooltip",
"Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "登录页面URL已成功复制到剪贴板请粘贴到当前浏览器的隐身模式窗口或另一个浏览器访问", "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "登录页面URL已成功复制到剪贴板请粘贴到当前浏览器的隐身模式窗口或另一个浏览器访问",
"Signin session": "保持登录会话", "Signin session": "保持登录会话",
"Signup items": "注册项", "Signup items": "注册项",