Skip to content
51 changes: 51 additions & 0 deletions packages/user/src/model/users/graphql/resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,57 @@ const Mutation = {
return mercuriusError;
}
},
removePhoto: async (
parent: unknown,
arguments_: undefined,
context: MercuriusContext,
) => {
const { app, config, database, dbSchema, reply, user } = context;

const service = getUserService(config, database, dbSchema);

if (!user) {
return new mercurius.ErrorWithProps("unauthorized", {}, 401);
}

try {
// eslint-disable-next-line unicorn/no-null
const updatedUser = await service.update(user.id, { photoId: null });

if (user.photoId) {
await service.fileService.delete(user.photoId);
}

const request = reply.request;

request.user = updatedUser;

if (request.config.user.features?.profileValidation?.enabled) {
await request.session?.fetchAndSetClaim(
new ProfileValidationClaim(),
createUserContext(undefined, request),
);
}
Comment thread
anveshdzangolab marked this conversation as resolved.

if (request.config.user.features?.signUp?.emailVerification) {
await request.session?.fetchAndSetClaim(
EmailVerificationClaim,
createUserContext(undefined, request),
);
}

return updatedUser;
} catch (error) {
app.log.error(error);

const mercuriusError = new mercurius.ErrorWithProps(
"Oops, Something went wrong",
);
mercuriusError.statusCode = 500;

return mercuriusError;
}
},
changeEmail: async (
parent: unknown,
arguments_: {
Expand Down
1 change: 1 addition & 0 deletions packages/user/src/model/users/graphql/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ const user = gql`
@auth(profileValidation: false, emailVerification: false)
changeEmail(email: String!): ChangeEmailResponse
@auth(profileValidation: false, emailVerification: false)
removePhoto: User @auth(profileValidation: false, emailVerification: false)
}

type Query {
Expand Down