1
Fork 0
mirror of https://github.com/jech/galene.git synced 2024-11-23 00:55:58 +01:00

Implement passing tokens in URL search parameters.

It is now possible to autojoin by going to a URL such as

  https://galene.example.org/group/test?username=jch&token=...
This commit is contained in:
Juliusz Chroboczek 2022-02-18 20:27:53 +01:00
parent 1d583e5367
commit 4ce9a91c40

View file

@ -32,6 +32,9 @@ let groupStatus = {};
/** @type {string} */ /** @type {string} */
let username = null; let username = null;
/** @type {string} */
let token = null;
/** /**
* @typedef {Object} settings * @typedef {Object} settings
* @property {boolean} [localMute] * @property {boolean} [localMute]
@ -272,12 +275,19 @@ function setConnected(connected) {
/** @this {ServerConnection} */ /** @this {ServerConnection} */
async function gotConnected() { async function gotConnected() {
let credentials;
if(token) {
credentials = {
type: 'token',
token: token,
};
token = null;
} else {
username = getInputElement('username').value.trim(); username = getInputElement('username').value.trim();
setConnected(true); setConnected(true);
let pw = getInputElement('password').value; let pw = getInputElement('password').value;
getInputElement('password').value = ''; getInputElement('password').value = '';
let credentials;
if(!groupStatus.authServer) if(!groupStatus.authServer)
credentials = pw; credentials = pw;
else else
@ -287,6 +297,7 @@ async function gotConnected() {
location: location.href, location: location.href,
password: pw, password: pw,
}; };
}
try { try {
await this.join(group, username, credentials); await this.join(group, username, credentials);
@ -3740,6 +3751,7 @@ async function start() {
group = decodeURIComponent( group = decodeURIComponent(
location.pathname.replace(/^\/[a-z]*\//, '').replace(/\/$/, '') location.pathname.replace(/^\/[a-z]*\//, '').replace(/\/$/, '')
); );
/** @type {Object} */ /** @type {Object} */
try { try {
let r = await fetch(".status.json") let r = await fetch(".status.json")
@ -3751,11 +3763,22 @@ async function start() {
return; return;
} }
let parms = new URLSearchParams(window.location.search);
if(window.location.search)
window.history.replaceState(null, '', window.location.pathname);
setTitle(groupStatus.displayName || capitalise(group)); setTitle(groupStatus.displayName || capitalise(group));
addFilters(); addFilters();
setMediaChoices(false).then(e => reflectSettings()); setMediaChoices(false).then(e => reflectSettings());
document.getElementById("login-container").classList.remove('invisible'); if(parms.has('token')) {
username = parms.get('username');
token = parms.get('token');
await serverConnect();
} else {
let container = document.getElementById("login-container");
container.classList.remove('invisible');
}
setViewportHeight(); setViewportHeight();
} }