UNPKG

strapi-plugin-firebase-authentication

Version:

Allows easy integration between clients utilizing Firebase for authentication and Strapi

422 lines (421 loc) 17 kB
/// <reference types="lodash" /> declare const _default: { register: ({ strapi }: { strapi: import("@strapi/types/dist/core").Strapi; }) => void; bootstrap: ({ strapi }: { strapi: import("@strapi/types/dist/core").Strapi; }) => Promise<void>; destroy: ({ strapi }: { strapi: import("@strapi/types/dist/core").Strapi; }) => void; config: { default: ({ env }: { env: any; }) => { firebaseJsonEncryptionKey: any; emailRequired: any; emailPattern: string; }; validator(config: import("./config").FirebaseAuthConfig): void; }; controllers: { firebaseController: { validateToken(ctx: any): Promise<any>; deleteByEmail(email: any): Promise<any>; overrideAccess(ctx: any): Promise<any>; emailLogin(ctx: any): Promise<void>; forgotPassword(ctx: any): Promise<void>; resetPassword(ctx: any): Promise<void>; requestMagicLink(ctx: import("koa").Context): Promise<void>; resetPasswordWithToken(ctx: import("koa").Context): Promise<void>; sendVerificationEmail(ctx: import("koa").Context): Promise<void>; verifyEmail(ctx: import("koa").Context): Promise<import("koa").Context>; }; userController: { list: (ctx: import("koa").Context | import("koa").DefaultContext) => Promise<void>; create: (ctx: any) => Promise<void>; get: (ctx: any) => Promise<void>; update: (ctx: any) => Promise<void>; delete: (ctx: import("koa").Context | import("koa").DefaultContext) => Promise<void>; deleteMany: (ctx: any) => Promise<void>; resetPassword: (ctx: any) => Promise<void>; sendResetEmail: (ctx: any) => Promise<void>; sendVerificationEmail: (ctx: any) => Promise<void>; }; settingsController: { setFirebaseConfigJson: (ctx: import("koa").Context | import("koa").DefaultContext) => Promise<void>; getFirebaseConfigJson: (ctx: import("koa").Context | import("koa").DefaultContext) => Promise<any>; delFirebaseConfigJson(ctx: import("koa").Context | import("koa").DefaultContext): Promise<void>; restart(ctx: import("koa").Context | import("koa").DefaultContext): Promise<any>; getPublicConfig(ctx: import("koa").Context | import("koa").DefaultContext): Promise<any>; savePasswordConfig(ctx: import("koa").Context | import("koa").DefaultContext): Promise<void>; }; }; routes: { admin: { type: string; routes: { method: string; path: string; handler: string; /** * Plugin server methods */ config: { policies: string[]; }; }[]; }; "content-api": { type: string; routes: ({ method: string; path: string; handler: string; config: { auth: boolean; policies: any[]; }; } | { method: string; path: string; handler: string; config: { policies: string[]; auth?: undefined; }; })[]; }; }; services: { settingsService: ({ strapi }: { strapi: any; }) => { init(): Promise<void>; getFirebaseConfigJson(): Promise<{ firebaseConfigJson: any; firebaseWebApiKey: any; passwordRequirementsRegex: any; passwordRequirementsMessage: any; passwordResetUrl: any; passwordResetEmailSubject: any; enableMagicLink: any; magicLinkUrl: any; magicLinkEmailSubject: any; magicLinkExpiryHours: any; emailVerificationUrl: any; emailVerificationEmailSubject: any; includeCredentialsInPasswordResetLink: any; includeCredentialsInVerificationLink: any; }>; setFirebaseConfigJson(requestBody: any): Promise<any>; delFirebaseConfigJson: () => Promise<any>; updateMagicLinkSettings(settings: any): Promise<{ enableMagicLink: any; magicLinkUrl: any; magicLinkEmailSubject: any; magicLinkExpiryHours: any; }>; encryptJson(key: string, json: string): Promise<any>; decryptJson(key: string, hash: string): Promise<any>; restart(): Promise<void>; }; userService: ({ strapi }: { strapi: any; }) => { get: (entityId: string) => Promise<any>; create: (payload: any) => Promise<any>; register: (userID: any, payload: any) => Promise<void>; list: (pagination: any, nextPageToken: any, sort: any, searchQuery: any) => Promise<{ data: any; pageToken: any; meta: { pagination: any; }; }>; updateFirebaseUser: (entityId: any, payload: any) => Promise<any>; update: (entityId: any, payload: any) => Promise<[PromiseSettledResult<any>, PromiseSettledResult<any>]>; resetPasswordFirebaseUser: (entityId: any, payload: any) => Promise<any>; resetPasswordStrapiUser: (entityId: any, payload: any) => Promise<any>; resetPassword: (entityId: any, payload: any) => Promise<[PromiseSettledResult<any>, PromiseSettledResult<any>]>; delete: (entityId: any) => Promise<[PromiseSettledResult<any>, PromiseSettledResult<any>]>; deleteFirebaseUser: (entityId: any) => Promise<any>; deleteStrapiUser: (entityId: any) => Promise<any>; deleteMany: (entityIDs: any) => Promise<any>; setSocialMetaData(): Promise<void>; sendPasswordResetEmail: (entityId: string) => Promise<any>; sendPasswordResetEmailByEmail: (email: string) => Promise<{ success: boolean; message: string; }>; resetPasswordWithToken: (token: string, newPassword: string) => Promise<{ success: boolean; message: string; }>; sendVerificationEmail: (entityId: string) => Promise<any>; }; firebaseService: ({ strapi }: { strapi: any; }) => { getUserAttributes(): Promise<any>; delete: (entityId: any) => Promise<{ success: boolean; }>; validateExchangeTokenPayload: (requestPayload: any) => Promise<any>; decodeIDToken: (idToken: any) => Promise<any>; overrideFirebaseAccess: (overrideUserId: string, populate?: string[]) => Promise<{ user: any; jwt: any; }>; checkIfUserExists(decodedToken: any): Promise<any>; fetchUser: (decodedToken: any) => Promise<any>; generateJWTForCurrentUser: (user: any) => Promise<any>; createStrapiUser(decodedToken: any, idToken: any, profileMetaData: any): Promise<any>; validateFirebaseToken: (idToken: string, profileMetaData?: any, populate?: string[]) => Promise<{ user: any; jwt: any; }>; emailLogin: (email: string, password: string, populate?: string[]) => Promise<{ user: any; jwt: any; }>; forgotPassword: (email: string) => Promise<{ message: string; }>; resetPassword: (password: string, user: any, populate: any[]) => Promise<{ user: any; jwt: any; }>; requestMagicLink(email: string): Promise<{ debug: { linkSent: any; email: string; message: any; }; success: boolean; message: string; requiresFrontend: boolean; verificationUrl: any; } | { success: boolean; message: string; requiresFrontend: boolean; verificationUrl: any; }>; sendVerificationEmail(email: string): Promise<{ message: string; }>; verifyEmail(token: string): Promise<{ success: boolean; message: string; }>; }; templateService: ({ strapi }: { strapi: any; }) => { getTemplate(templateType: import("./templates/types").TemplateType): Promise<import("./templates/types").EmailTemplate>; compileTemplate(templateString: string): import("lodash").TemplateExecutor; validateVariables(variables: Partial<import("./templates/types").TemplateVariables>, required: string[]): void; }; emailService: ({ strapi }: { strapi: any; }) => { sendTemplatedEmail(to: string, templateType: import("./templates/types").TemplateType, variables: Partial<import("./templates/types").TemplateVariables>): Promise<void>; sendPasswordResetEmail(user: any, resetLink: string): Promise<{ success: boolean; message: string; }>; sendMagicLinkEmail(email: string, magicLink: string, config: any): Promise<{ success: boolean; message: string; }>; sendPasswordChangedEmail(user: any): Promise<{ success: boolean; message: string; }>; sendVerificationEmail(user: any, verificationLink: string): Promise<{ success: boolean; message: string; }>; }; firebaseUserDataService: ({ strapi }: { strapi: any; }) => { findOrCreateForUser(userId: string): Promise<any>; getByFirebaseUID(firebaseUID: string): Promise<any>; updateForUser(userId: string, data: { firebaseUserID?: string; appleEmail?: string; }): Promise<any>; }; autoLinkService: { linkAllUsers(strapi: import("@strapi/types/dist/core").Strapi): Promise<import("./services/autoLinkService").LinkResult>; }; firebaseStrapiLinkService: ({ strapi }: { strapi: any; }) => { buildUserMap(): Promise<Map<any, any>>; linkFirebaseUsers(firebaseUsers: any[], uidToUserMap: Map<string, any>, allStrapiUsers: any[]): any[]; }; tokenService: ({ strapi }: { strapi: any; }) => { generateResetToken(firebaseUserDataDocumentId: string): Promise<string>; validateResetToken(token: string): Promise<import("./services/tokenService").TokenValidationResult>; invalidateResetToken(firebaseUserDataDocumentId: string): Promise<void>; generateVerificationToken(firebaseUserDataDocumentId: string, email: string): Promise<string>; validateVerificationToken(token: string): Promise<import("./services/tokenService").VerificationTokenValidationResult>; invalidateVerificationToken(firebaseUserDataDocumentId: string): Promise<void>; }; }; contentTypes: { "firebase-authentication-configuration": { schema: { kind: string; collectionName: string; info: { singularName: string; pluralName: string; displayName: string; }; options: { draftAndPublish: boolean; }; pluginOptions: { "content-manager": { visible: boolean; }; "content-type-builder": { visible: boolean; }; }; attributes: { firebase_config_json: { type: string; }; firebase_web_api_key: { type: string; required: boolean; configurable: boolean; description: string; }; passwordRequirementsRegex: { type: string; default: string; }; passwordRequirementsMessage: { type: string; default: string; }; passwordResetUrl: { type: string; default: string; }; passwordResetEmailSubject: { type: string; default: string; }; enableMagicLink: { type: string; default: boolean; description: string; }; magicLinkUrl: { type: string; default: string; description: string; }; magicLinkEmailSubject: { type: string; default: string; }; magicLinkExpiryHours: { type: string; default: number; minimum: number; maximum: number; description: string; }; emailVerificationUrl: { type: string; default: string; description: string; }; emailVerificationEmailSubject: { type: string; default: string; }; includeCredentialsInPasswordResetLink: { type: string; default: boolean; description: string; }; includeCredentialsInVerificationLink: { type: string; default: boolean; description: string; }; }; }; }; "firebase-user-data": { schema: { kind: string; collectionName: string; info: { singularName: string; pluralName: string; displayName: string; description: string; }; options: { draftAndPublish: boolean; }; pluginOptions: { "content-manager": { visible: boolean; }; "content-type-builder": { visible: boolean; }; }; attributes: { user: { type: string; relation: string; target: string; }; firebaseUserID: { type: string; unique: boolean; required: boolean; }; appleEmail: { type: string; private: boolean; }; resetTokenHash: { type: string; private: boolean; }; resetTokenExpiresAt: { type: string; }; verificationTokenHash: { type: string; private: boolean; }; verificationTokenExpiresAt: { type: string; }; }; }; }; }; policies: { "is-authenticated": (policyContext: any) => Promise<boolean>; }; middlewares: {}; }; export default _default;