mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-01 10:52:26 -05:00
refactor oauth registration flow
This commit is contained in:
parent
0bcf63b2cf
commit
11ac9e2fd2
1 changed files with 33 additions and 23 deletions
|
|
@ -12,19 +12,20 @@ module.exports = function Auth({setOauth}) {
|
||||||
// check if current domain runs an instance
|
// check if current domain runs an instance
|
||||||
let thisUrl = new URL(window.location.origin);
|
let thisUrl = new URL(window.location.origin);
|
||||||
thisUrl.pathname = "/api/v1/instance";
|
thisUrl.pathname = "/api/v1/instance";
|
||||||
fetch(thisUrl.href)
|
Promise.try(() => {
|
||||||
.then((res) => res.json())
|
return fetch(thisUrl.href);
|
||||||
.then((json) => {
|
}).then((res) => {
|
||||||
if (json && json.uri) {
|
if (res.status == 200) {
|
||||||
if (isStillMounted) {
|
return res.json();
|
||||||
|
}
|
||||||
|
}).then((json) => {
|
||||||
|
if (json && json.uri && isStillMounted) {
|
||||||
setInstance(json.uri);
|
setInstance(json.uri);
|
||||||
}
|
}
|
||||||
}
|
}).catch((e) => {
|
||||||
})
|
console.log("error checking instance response:", e);
|
||||||
.catch((e) => {
|
|
||||||
console.error("caught", e);
|
|
||||||
// no instance here
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
// cleanup function
|
// cleanup function
|
||||||
isStillMounted = false;
|
isStillMounted = false;
|
||||||
|
|
@ -32,18 +33,27 @@ module.exports = function Auth({setOauth}) {
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
function doAuth() {
|
function doAuth() {
|
||||||
|
return Promise.try(() => {
|
||||||
|
return new URL(instance);
|
||||||
|
}).catch(TypeError, () => {
|
||||||
|
return new URL(`https://${instance}`);
|
||||||
|
}).then((parsedURL) => {
|
||||||
|
let url = parsedURL.toString();
|
||||||
let oauth = oauthLib({
|
let oauth = oauthLib({
|
||||||
instance: instance,
|
instance: url,
|
||||||
client_name: "GoToSocial Admin Panel",
|
client_name: "GoToSocial Admin Panel",
|
||||||
scope: ["admin"],
|
scope: ["admin"],
|
||||||
website: window.location.href
|
website: window.location.href
|
||||||
});
|
});
|
||||||
setOauth(oauth);
|
setOauth(oauth);
|
||||||
|
setInstance(url);
|
||||||
return Promise.try(() => {
|
return oauth.register().then(() => {
|
||||||
return oauth.register();
|
return oauth;
|
||||||
}).then(() => {
|
});
|
||||||
|
}).then((oauth) => {
|
||||||
return oauth.authorize();
|
return oauth.authorize();
|
||||||
|
}).catch((e) => {
|
||||||
|
console.log("error authenticating:", e);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue