mirror of
https://github.com/jech/galene.git
synced 2024-11-22 16:45: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} */
|
||||
let username = null;
|
||||
|
||||
/** @type {string} */
|
||||
let token = null;
|
||||
|
||||
/**
|
||||
* @typedef {Object} settings
|
||||
* @property {boolean} [localMute]
|
||||
|
@ -272,12 +275,19 @@ function setConnected(connected) {
|
|||
|
||||
/** @this {ServerConnection} */
|
||||
async function gotConnected() {
|
||||
let credentials;
|
||||
if(token) {
|
||||
credentials = {
|
||||
type: 'token',
|
||||
token: token,
|
||||
};
|
||||
token = null;
|
||||
} else {
|
||||
username = getInputElement('username').value.trim();
|
||||
setConnected(true);
|
||||
|
||||
let pw = getInputElement('password').value;
|
||||
getInputElement('password').value = '';
|
||||
let credentials;
|
||||
if(!groupStatus.authServer)
|
||||
credentials = pw;
|
||||
else
|
||||
|
@ -287,6 +297,7 @@ async function gotConnected() {
|
|||
location: location.href,
|
||||
password: pw,
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
await this.join(group, username, credentials);
|
||||
|
@ -3740,6 +3751,7 @@ async function start() {
|
|||
group = decodeURIComponent(
|
||||
location.pathname.replace(/^\/[a-z]*\//, '').replace(/\/$/, '')
|
||||
);
|
||||
|
||||
/** @type {Object} */
|
||||
try {
|
||||
let r = await fetch(".status.json")
|
||||
|
@ -3751,11 +3763,22 @@ async function start() {
|
|||
return;
|
||||
}
|
||||
|
||||
let parms = new URLSearchParams(window.location.search);
|
||||
if(window.location.search)
|
||||
window.history.replaceState(null, '', window.location.pathname);
|
||||
setTitle(groupStatus.displayName || capitalise(group));
|
||||
|
||||
addFilters();
|
||||
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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue