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:
parent
1d583e5367
commit
4ce9a91c40
1 changed files with 36 additions and 13 deletions
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue