25 lines
750 B
TypeScript
25 lines
750 B
TypeScript
import { IGlobalVariable } from '@automatisch/types';
|
|
import { URL, URLSearchParams } from 'url';
|
|
import getBaseUrl from '../common/get-base-url';
|
|
|
|
export default async function generateAuthUrl($: IGlobalVariable) {
|
|
// ref: https://docs.gitlab.com/ee/api/oauth2.html#authorization-code-flow
|
|
|
|
const scopes = ['api', 'read_user'];
|
|
|
|
const searchParams = new URLSearchParams({
|
|
client_id: $.auth.data.clientId as string,
|
|
redirect_uri: $.auth.data.oAuthRedirectUrl as string,
|
|
scope: scopes.join(' '),
|
|
response_type: 'code',
|
|
state: Date.now().toString(),
|
|
});
|
|
|
|
const baseUrl = getBaseUrl($);
|
|
const path = `/oauth/authorize?${searchParams.toString()}`;
|
|
|
|
await $.auth.set({
|
|
url: new URL(path, baseUrl).toString(),
|
|
});
|
|
}
|