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:
nicole mikołajczyk
2025-11-10 13:31:08 +01:00
parent 81e9cfdc78
commit ef0fbd4085
3 changed files with 10 additions and 12 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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,