@kir-dev/passport-authsch
Version:
Passport.js Strategy for AuthSCH
143 lines (142 loc) • 3.75 kB
TypeScript
export type AuthSchTokenResponse = {
access_token: string;
expires_in: number;
token_type: string;
scope: string[];
refresh_token: string;
};
export type StrategyParams = {
clientId: string;
clientSecret: string;
scopes: AuthSchScope[];
loginEndpoint?: string;
callbackEndpoint?: string;
redirectUri?: string;
};
export declare enum AuthSchScope {
PROFILE = "profile",
EMAIL = "email",
PHONE = "phone",
ADDRESS = "address",
ROLES = "roles",
EDU_ID = "bme.hu:eduPersonPrincipalName",
NEPTUN = "bme.hu:niifPersonOrgID",// only with special request!
ATTENDED_COURSES = "bme.hu:niifPersonAttendedCourse",// only with special request!
BME_STATUS = "meta.bme.hu:unitScope",
SCH_GROUPS = "directory.sch.bme.hu:groups",
SCHACC_ID = "directory.sch.bme.hu:sAMAccountName",
PEK_PROFILE = "pek.sch.bme.hu:profile"
}
export declare enum BmeUnitScope {
BME = "BME",
BME_NEWBIE = "BME_NEWBIE",
BME_VIK = "BME_VIK",
BME_VIK_ACTIVE = "BME_VIK_ACTIVE",
BME_VIK_NEWBIE = "BME_VIK_NEWBIE",
BME_VBK = "BME_VBK",
BME_VBK_ACTIVE = "BME_VBK_ACTIVE",
BME_VBK_NEWBIE = "BME_VBK_NEWBIE"
}
export type RawGroupMembership = {
id: number;
name: string;
status: 'körvezető' | 'tag' | 'öregtag';
title: string[];
start: string;
end?: string;
};
export type RawAuthSchProfile = {
name: string;
family_name: string;
given_name: string;
birthdate: string;
address: {
formatted: string;
};
'bme.hu:niifPersonOrgID': string;
'bme.hu:eduPersonPrincipalName': string;
'bme.hu:niifEduPersonAttendedCourse/v1': string[];
'meta.bme.hu:unitScope/v1': string;
'meta.bme.hu:updated_at': number;
email: string;
email_verified: boolean;
'directory.sch.bme.hu:groups/v1': string[];
'directory.sch.bme.hu:sAMAccountName': string;
'meta.directory.sch.bme.hu:updated_at': number;
'pek.sch.bme.hu:entrants/v1': {
groupId: number;
groupName: string;
entrantType: 'AB' | 'KB';
}[];
'pek.sch.bme.hu:executiveAt/v1': {
id: number;
name: string;
}[];
'pek.sch.bme.hu:activeMemberships/v1': {
id: number;
name: string;
title: string[];
}[];
'pek.sch.bme.hu:alumniMemberships/v1': {
id: number;
name: string;
start: string;
end: string;
}[];
'pek.sch.bme.hu:uid': string;
'meta.pek.sch.bme.hu:updated_at': number;
phone_number: string;
phone_number_verified: boolean;
roles: string[];
sub: string;
updated_at: number;
};
export type AuthSchProfile = {
authSchId: string;
fullName: string;
lastName: string;
firstName: string;
birthdate: string;
email: string;
emailVerfied: boolean;
address: string;
phone: string;
phoneVerified: boolean;
bme: {
eduId: string;
attendedCourses: string[];
bmeStatus: BmeUnitScope[];
neptun: string;
updatedAt: number;
};
schAcc: {
schAccUsername: string;
groups: string[];
roles: string[];
updatedAt: number;
};
pek: {
executiveAt: {
groupId: number;
groupName: string;
}[];
activeMemberAt: {
groupId: number;
groupName: string;
titles: string[];
}[];
alumniMemberAt: {
groupId: number;
groupName: string;
start: string;
end: string;
}[];
pekId: string;
updatedAt: number;
};
entrants: {
groupId: number;
groupName: string;
entrantType: 'AB' | 'KB';
}[];
};