auth.resolver.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { Args, Context, Mutation, Query, Resolver } from '@nestjs/graphql';
  2. import {
  3. LoginResult,
  4. MutationAuthenticateArgs,
  5. MutationLoginArgs,
  6. Permission,
  7. } from '@vendure/common/lib/generated-types';
  8. import { Request, Response } from 'express';
  9. import { ConfigService } from '../../../config/config.service';
  10. import { AdministratorService } from '../../../service/services/administrator.service';
  11. import { AuthService } from '../../../service/services/auth.service';
  12. import { ChannelService } from '../../../service/services/channel.service';
  13. import { CustomerService } from '../../../service/services/customer.service';
  14. import { UserService } from '../../../service/services/user.service';
  15. import { RequestContext } from '../../common/request-context';
  16. import { Allow } from '../../decorators/allow.decorator';
  17. import { Ctx } from '../../decorators/request-context.decorator';
  18. import { BaseAuthResolver } from '../base/base-auth.resolver';
  19. @Resolver()
  20. export class AuthResolver extends BaseAuthResolver {
  21. constructor(
  22. authService: AuthService,
  23. userService: UserService,
  24. configService: ConfigService,
  25. administratorService: AdministratorService,
  26. ) {
  27. super(authService, userService, administratorService, configService);
  28. }
  29. @Mutation()
  30. @Allow(Permission.Public)
  31. login(
  32. @Args() args: MutationLoginArgs,
  33. @Ctx() ctx: RequestContext,
  34. @Context('req') req: Request,
  35. @Context('res') res: Response,
  36. ): Promise<LoginResult> {
  37. return super.login(args, ctx, req, res, 'admin');
  38. }
  39. @Mutation()
  40. @Allow(Permission.Public)
  41. authenticate(
  42. @Args() args: MutationAuthenticateArgs,
  43. @Ctx() ctx: RequestContext,
  44. @Context('req') req: Request,
  45. @Context('res') res: Response,
  46. ): Promise<LoginResult> {
  47. return this.createAuthenticatedSession(ctx, args, req, res, 'shop');
  48. }
  49. @Mutation()
  50. @Allow(Permission.Public)
  51. logout(
  52. @Ctx() ctx: RequestContext,
  53. @Context('req') req: Request,
  54. @Context('res') res: Response,
  55. ): Promise<boolean> {
  56. return super.logout(ctx, req, res);
  57. }
  58. @Query()
  59. @Allow(Permission.Authenticated, Permission.Owner)
  60. me(@Ctx() ctx: RequestContext) {
  61. return super.me(ctx, 'admin');
  62. }
  63. }