mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2026-02-22 00:42:03 +00:00
* chore: add oidc base config * wip: authorize page * feat: implement basic oidc functionality * refactor: implement oidc following tinyauth patterns * feat: adapt frontend to oidc flow * fix: review comments * fix: oidc review comments * feat: refresh token grant type support * feat: cleanup expired oidc sessions * feat: frontend i18n * fix: fix typo in error screen * tests: add basic testing * fix: more review comments * refactor: rework oidc error messages * feat: openid discovery endpoint * feat: jwk endpoint * i18n: fix typo * fix: more rabbit nitpicks * fix: final review comments * i18n: authorize page error messages
54 lines
1.1 KiB
TypeScript
54 lines
1.1 KiB
TypeScript
export type OIDCValues = {
|
|
scope: string;
|
|
response_type: string;
|
|
client_id: string;
|
|
redirect_uri: string;
|
|
state: string;
|
|
};
|
|
|
|
interface IuseOIDCParams {
|
|
values: OIDCValues;
|
|
compiled: string;
|
|
isOidc: boolean;
|
|
missingParams: string[];
|
|
}
|
|
|
|
const optionalParams: string[] = ["state"];
|
|
|
|
export function useOIDCParams(params: URLSearchParams): IuseOIDCParams {
|
|
let compiled: string = "";
|
|
let isOidc = false;
|
|
const missingParams: string[] = [];
|
|
|
|
const values: OIDCValues = {
|
|
scope: params.get("scope") ?? "",
|
|
response_type: params.get("response_type") ?? "",
|
|
client_id: params.get("client_id") ?? "",
|
|
redirect_uri: params.get("redirect_uri") ?? "",
|
|
state: params.get("state") ?? "",
|
|
};
|
|
|
|
for (const key of Object.keys(values)) {
|
|
if (!values[key as keyof OIDCValues]) {
|
|
if (!optionalParams.includes(key)) {
|
|
missingParams.push(key);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (missingParams.length === 0) {
|
|
isOidc = true;
|
|
}
|
|
|
|
if (isOidc) {
|
|
compiled = new URLSearchParams(values).toString();
|
|
}
|
|
|
|
return {
|
|
values,
|
|
compiled,
|
|
isOidc,
|
|
missingParams,
|
|
};
|
|
}
|