Some fixes based on test failure.
This commit is contained in:
parent
edb3c88a41
commit
0b7057dd1d
|
@ -1,9 +1,9 @@
|
|||
import { ssoCallbackUrl } from "./utils"
|
||||
import { authenticateThirdParty } from "./third-party-common"
|
||||
import { authenticateThirdParty, SaveUserFunction } from "./third-party-common"
|
||||
import { ConfigType, GoogleConfig, Database, SSOProfile } from "@budibase/types"
|
||||
const GoogleStrategy = require("passport-google-oauth").OAuth2Strategy
|
||||
|
||||
export function buildVerifyFn(saveUserFn?: Function) {
|
||||
export function buildVerifyFn(saveUserFn?: SaveUserFunction) {
|
||||
return (
|
||||
accessToken: string,
|
||||
refreshToken: string,
|
||||
|
@ -39,7 +39,7 @@ export function buildVerifyFn(saveUserFn?: Function) {
|
|||
export async function strategyFactory(
|
||||
config: GoogleConfig["config"],
|
||||
callbackUrl: string,
|
||||
saveUserFn?: Function
|
||||
saveUserFn?: SaveUserFunction
|
||||
) {
|
||||
try {
|
||||
const { clientID, clientSecret } = config
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import fetch from "node-fetch"
|
||||
import { authenticateThirdParty } from "./third-party-common"
|
||||
import { authenticateThirdParty, SaveUserFunction } from "./third-party-common"
|
||||
import { ssoCallbackUrl } from "./utils"
|
||||
import {
|
||||
Config,
|
||||
|
@ -17,7 +17,7 @@ type JwtClaims = {
|
|||
email: string
|
||||
}
|
||||
|
||||
export function buildVerifyFn(saveUserFn?: Function) {
|
||||
export function buildVerifyFn(saveUserFn?: SaveUserFunction) {
|
||||
/**
|
||||
* @param {*} issuer The identity provider base URL
|
||||
* @param {*} sub The user ID
|
||||
|
@ -106,7 +106,7 @@ function validEmail(value: string) {
|
|||
*/
|
||||
export async function strategyFactory(
|
||||
config: OIDCConfiguration,
|
||||
saveUserFn?: Function
|
||||
saveUserFn?: SaveUserFunction
|
||||
) {
|
||||
try {
|
||||
const verify = buildVerifyFn(saveUserFn)
|
||||
|
|
|
@ -9,6 +9,17 @@ import fetch from "node-fetch"
|
|||
import { ThirdPartyUser } from "@budibase/types"
|
||||
const jwt = require("jsonwebtoken")
|
||||
|
||||
type SaveUserOpts = {
|
||||
requirePassword?: boolean
|
||||
hashPassword?: boolean
|
||||
currentUserId?: string
|
||||
}
|
||||
|
||||
export type SaveUserFunction = (
|
||||
user: ThirdPartyUser,
|
||||
opts: SaveUserOpts
|
||||
) => Promise<any>
|
||||
|
||||
/**
|
||||
* Common authentication logic for third parties. e.g. OAuth, OIDC.
|
||||
*/
|
||||
|
@ -16,7 +27,7 @@ export async function authenticateThirdParty(
|
|||
thirdPartyUser: ThirdPartyUser,
|
||||
requireLocalAccount: boolean = true,
|
||||
done: Function,
|
||||
saveUserFn?: Function
|
||||
saveUserFn?: SaveUserFunction
|
||||
) {
|
||||
if (!saveUserFn) {
|
||||
throw new Error("Save user function must be provided")
|
||||
|
@ -81,7 +92,7 @@ export async function authenticateThirdParty(
|
|||
|
||||
// create or sync the user
|
||||
try {
|
||||
await saveUserFn(dbUser, false, false)
|
||||
await saveUserFn(dbUser, { hashPassword: false, requirePassword: false })
|
||||
} catch (err: any) {
|
||||
return authError(done, err)
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ export const getUser = async (userId: string) => {
|
|||
return user
|
||||
}
|
||||
|
||||
interface SaveUserOpts {
|
||||
export interface SaveUserOpts {
|
||||
hashPassword?: boolean
|
||||
requirePassword?: boolean
|
||||
currentUserId?: string
|
||||
|
|
Loading…
Reference in New Issue