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