👔 add create account in provision
Add logic to create a new account when provisioning if not yet registered.
This commit is contained in:
@ -46,13 +46,18 @@ export const googleCallbackService = async (
|
||||
|
||||
return await OAuthUserProvisionService(
|
||||
{
|
||||
providerName: "google",
|
||||
openId: userData.sub,
|
||||
provider: "google",
|
||||
providerId: userData.sub,
|
||||
providerToken: accessToken,
|
||||
providerPayload: userData,
|
||||
email: userData.email,
|
||||
username: `goo_${userData.sub}`,
|
||||
name: userData.name,
|
||||
avatar: userData.picture,
|
||||
password: Math.random()
|
||||
.toString(36)
|
||||
.slice(2, 16),
|
||||
},
|
||||
userData,
|
||||
userHeaderInfo
|
||||
);
|
||||
} catch (error) {
|
||||
|
||||
@ -3,22 +3,15 @@ import { UserHeaderInformation } from "../../../../helpers/http/userHeader/getUs
|
||||
import { findUserService } from "../../../user/services/internal/findUser.service";
|
||||
import { createUserSessionService } from "../../../userSession/services/createUserSession.service";
|
||||
import { ErrorForwarder } from "../../../../helpers/error/instances/forwarder";
|
||||
import { createUserViaOauth } from "../../../user/user.types";
|
||||
import { createUserService } from "../../../user/services/internal/createUser.service";
|
||||
|
||||
export const OAuthUserProvisionService = async (
|
||||
payload: {
|
||||
providerName: string;
|
||||
openId: string;
|
||||
email: string;
|
||||
username?: string;
|
||||
name: string;
|
||||
avatar?: string;
|
||||
bio?: string;
|
||||
},
|
||||
providerRawCallback: unknown,
|
||||
payload: createUserViaOauth,
|
||||
userHeaderInfo: UserHeaderInformation
|
||||
) => {
|
||||
try {
|
||||
const providerId = `${payload.providerName}_${payload.openId}`;
|
||||
const providerId = payload.providerId;
|
||||
const findUserResult = (await findUserService({
|
||||
identifier: providerId,
|
||||
queryTarget: "providerId",
|
||||
@ -28,12 +21,8 @@ export const OAuthUserProvisionService = async (
|
||||
if (findUserResult) {
|
||||
return await createUserSessionService(findUserResult.id, userHeaderInfo);
|
||||
} else {
|
||||
/**
|
||||
* === TODO ===
|
||||
* If the user is not found,
|
||||
* create a new one with the data obtained from the OAuth provider,
|
||||
* then create a user session and authenticate it immediately.
|
||||
*/
|
||||
const createdUser = await createUserService(payload);
|
||||
return await createUserSessionService(createdUser.id, userHeaderInfo);
|
||||
}
|
||||
} catch (error) {
|
||||
ErrorForwarder(error);
|
||||
|
||||
Reference in New Issue
Block a user