Add switch to login form for choosing well-know or given server address
This commit is contained in:
parent
7eeb60539f
commit
2e197e508f
@ -6,6 +6,7 @@ import {
|
||||
useLocale,
|
||||
useSetLocale,
|
||||
useTranslate,
|
||||
BooleanInput,
|
||||
} from "react-admin";
|
||||
import { Field, Form } from "react-final-form";
|
||||
import {
|
||||
@ -71,6 +72,7 @@ const LoginPage = ({ theme }) => {
|
||||
const setLocale = useSetLocale();
|
||||
const translate = useTranslate();
|
||||
const homeserver = localStorage.getItem("base_url");
|
||||
const force_server = localStorage.getItem("force_server");
|
||||
|
||||
const renderInput = ({
|
||||
meta: { touched, error } = {},
|
||||
@ -117,7 +119,7 @@ const LoginPage = ({ theme }) => {
|
||||
|
||||
return (
|
||||
<Form
|
||||
initialValues={{ homeserver: homeserver }}
|
||||
initialValues={{ homeserver: homeserver, force_server: force_server }}
|
||||
onSubmit={handleSubmit}
|
||||
validate={validate}
|
||||
render={({ handleSubmit }) => (
|
||||
@ -154,6 +156,14 @@ const LoginPage = ({ theme }) => {
|
||||
label={translate("synapseadmin.auth.homeserver")}
|
||||
disabled={loading}
|
||||
/>
|
||||
</div>
|
||||
<div className={classes.input}>
|
||||
<BooleanInput
|
||||
autoFocus
|
||||
name="force_server"
|
||||
label={translate("synapseadmin.auth.force_server")}
|
||||
disabled={loading}
|
||||
/>
|
||||
</div>
|
||||
<div className={classes.input}>
|
||||
<Field
|
||||
|
||||
@ -6,6 +6,7 @@ export default {
|
||||
auth: {
|
||||
homeserver: "Heimserver",
|
||||
welcome: "Willkommen bei Synapse-admin",
|
||||
force_server: "Homeserver-Adresse erzwingen",
|
||||
},
|
||||
users: {
|
||||
invalid_user_id:
|
||||
|
||||
@ -6,6 +6,7 @@ export default {
|
||||
auth: {
|
||||
homeserver: "Homeserver",
|
||||
welcome: "Welcome to Synapse-admin",
|
||||
force_server: "Force homeserver address",
|
||||
},
|
||||
users: {
|
||||
invalid_user_id:
|
||||
|
||||
@ -15,9 +15,17 @@ const stripTrailingSlash = str => {
|
||||
return str.endsWith("/") ? str.slice(0, -1) : str;
|
||||
};
|
||||
|
||||
const getBaseUrl = (login_base_url, json_base_url, force_server) => {
|
||||
if (force_server) {
|
||||
return ensureHttpsForUrl(login_base_url);
|
||||
} else {
|
||||
return json_base_url;
|
||||
}
|
||||
}
|
||||
|
||||
const authProvider = {
|
||||
// called when the user attempts to log in
|
||||
login: ({ homeserver, username, password }) => {
|
||||
login: ({ homeserver, force_server, username, password }) => {
|
||||
console.log("login ");
|
||||
const options = {
|
||||
method: "POST",
|
||||
@ -34,11 +42,15 @@ const authProvider = {
|
||||
ensureHttpsForUrl(trimmed_url) + "/_matrix/client/r0/login";
|
||||
|
||||
return fetchUtils.fetchJson(login_api_url, options).then(({ json }) => {
|
||||
const normalized_base_url = stripTrailingSlash(
|
||||
json.well_known["m.homeserver"].base_url
|
||||
);
|
||||
const normalized_base_url = stripTrailingSlash(getBaseUrl(
|
||||
trimmed_url,
|
||||
json.well_known["m.homeserver"].base_url,
|
||||
force_server
|
||||
));
|
||||
|
||||
localStorage.setItem("base_url", normalized_base_url);
|
||||
localStorage.setItem("home_server_url", json.home_server);
|
||||
localStorage.setItem("force_server", force_server);
|
||||
localStorage.setItem("user_id", json.user_id);
|
||||
localStorage.setItem("access_token", json.access_token);
|
||||
localStorage.setItem("device_id", json.device_id);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user