pl-fe: do not request iceshrimp scope in on external auth for now
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
@ -11,7 +11,7 @@ import type { AppDispatch, RootState } from 'pl-fe/store';
|
||||
|
||||
const createProviderApp = () =>
|
||||
async (dispatch: AppDispatch, getState: () => RootState) => {
|
||||
const scopes = getScopes(getState());
|
||||
const scopes = getScopes(getState(), undefined, true);
|
||||
|
||||
const params = {
|
||||
client_name: `${sourceCode.displayName} (${new URL(window.origin).host})`,
|
||||
@ -27,7 +27,7 @@ const prepareRequest = (provider: string) =>
|
||||
async(dispatch: AppDispatch, getState: () => RootState) => {
|
||||
const baseURL = isURL(BuildConfig.BACKEND_URL) ? BuildConfig.BACKEND_URL : '';
|
||||
|
||||
const scopes = getScopes(getState());
|
||||
const scopes = getScopes(getState(), undefined, true);
|
||||
const app = await dispatch(createProviderApp());
|
||||
const { client_id, redirect_uri } = app;
|
||||
|
||||
|
||||
@ -36,14 +36,14 @@ const createExternalApp = (instance: Instance, baseURL?: string) => {
|
||||
client_name: `${sourceCode.displayName} (${new URL(window.origin).host})`,
|
||||
redirect_uris: `${window.location.origin}/login/external`,
|
||||
website: sourceCode.homepage,
|
||||
scopes: getInstanceScopes(instance),
|
||||
scopes: getInstanceScopes(instance, undefined, true),
|
||||
};
|
||||
|
||||
return createApp(params, baseURL);
|
||||
};
|
||||
|
||||
const externalAuthorize = (instance: Instance, baseURL: string) => {
|
||||
const scopes = getInstanceScopes(instance);
|
||||
const scopes = getInstanceScopes(instance, undefined, true);
|
||||
|
||||
return createExternalApp(instance, baseURL).then((app) => {
|
||||
const { client_id, redirect_uri } = app;
|
||||
|
||||
@ -6,21 +6,15 @@ import type { RootState } from 'pl-fe/store';
|
||||
* Get the OAuth scopes to use for login & signup.
|
||||
* Mastodon will refuse scopes it doesn't know, so care is needed.
|
||||
*/
|
||||
const getInstanceScopes = (instance: Instance, admin: boolean = true) => {
|
||||
const getInstanceScopes = (instance: Instance, admin: boolean = true, external: boolean = false) => {
|
||||
const v = getFeatures(instance).version;
|
||||
|
||||
let scopes;
|
||||
|
||||
switch (v.software) {
|
||||
case ICESHRIMP_NET:
|
||||
scopes = 'read write follow push iceshrimp';
|
||||
break;
|
||||
case TOKI:
|
||||
scopes = 'read write follow push write:bites';
|
||||
break;
|
||||
case PLEROMA:
|
||||
scopes = 'read write follow push';
|
||||
break;
|
||||
default:
|
||||
scopes = 'read write follow push';
|
||||
}
|
||||
@ -38,11 +32,15 @@ const getInstanceScopes = (instance: Instance, admin: boolean = true) => {
|
||||
}
|
||||
}
|
||||
|
||||
if (v.software === ICESHRIMP_NET && !external) {
|
||||
scopes += ' iceshrimp';
|
||||
}
|
||||
|
||||
return scopes;
|
||||
};
|
||||
|
||||
/** Convenience function to get scopes from instance in store. */
|
||||
const getScopes = (state: RootState) => getInstanceScopes(state.instance);
|
||||
const getScopes = (state: RootState, admin?: boolean, external?: boolean) => getInstanceScopes(state.instance, admin, external);
|
||||
|
||||
export {
|
||||
getInstanceScopes,
|
||||
|
||||
Reference in New Issue
Block a user