From cfb5d936eec2427cd7357ff77fc52ebe6869dd56 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Wed, 3 May 2023 18:48:35 +0200 Subject: [PATCH] Improve interface to makeToken. It now takes a template that allows setting all options. --- static/galene.js | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/static/galene.js b/static/galene.js index afaff9c..88ee1c7 100644 --- a/static/galene.js +++ b/static/galene.js @@ -2122,7 +2122,7 @@ function userMenu(elt) { if(serverConnection.version !== "1" && serverConnection.permissions.indexOf('token') >= 0) { items.push({label: 'Invite user', onClick: () => { - makeToken(null); + makeToken(); }}); } if(serverConnection.permissions.indexOf('present') >= 0 && canFile()) @@ -3047,11 +3047,11 @@ const units = { /** * @param {string} s - * @returns {string|number} + * @returns {Date|number} */ function parseExpiration(s) { if(!s) - return units.d; + return null; let re = /^([0-9]+)(s|min|h|d|yr)$/ let e = re.exec(s) if(e) { @@ -3063,7 +3063,7 @@ function parseExpiration(s) { let d = new Date(s); if(d.toString() === 'Invalid Date') throw new Error("Couldn't parse expiration date"); - return d.toISOString(); + return d; } function protocol2Predicate() { @@ -3086,20 +3086,25 @@ function editTokenPredicate() { } /** - * @param {string} username - * @param {number|string} [expires] + * @param {Object} [template] */ -function makeToken(username, expires) { +function makeToken(template) { + if(!template) + template = {}; let v = { group: group, - }; - if(username) - v.username = username; - if(expires) - v.expires = expires; + } + if('username' in template) + v.username = template.username; + if('expires' in template) + v.expires = template.expires; else v.expires = units.d; - if(serverConnection.permissions.indexOf('present') >= 0) + if('not-before' in template) + v["not-before"] = template["not-before"]; + if('permissions' in template) + v.permissions = template.permissions; + else if(serverConnection.permissions.indexOf('present') >= 0) v.permissions = ['present']; else v.permissions = []; @@ -3112,7 +3117,13 @@ commands.invite = { parameters: "[username] [expiration]", f: (c, r) => { let p = parseCommand(r); - makeToken(p[0], parseExpiration(p[1])); + let template = {}; + if(p[0]) + template.username = p[0]; + let expires = parseExpiration(p[1]); + if(expires) + template.expires = expires; + makeToken(template); } }