auth.resolver.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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 { Transaction } from '../../decorators/transaction.decorator';
  19. import { BaseAuthResolver } from '../base/base-auth.resolver';
  20. @Resolver()
  21. export class AuthResolver extends BaseAuthResolver {
  22. constructor(
  23. authService: AuthService,
  24. userService: UserService,
  25. configService: ConfigService,
  26. administratorService: AdministratorService,
  27. ) {
  28. super(authService, userService, administratorService, configService);
  29. }
  30. @Transaction
  31. @Mutation()
  32. @Allow(Permission.Public)
  33. login(
  34. @Args() args: MutationLoginArgs,
  35. @Ctx() ctx: RequestContext,
  36. @Context('req') req: Request,
  37. @Context('res') res: Response,
  38. ): Promise<LoginResult> {
  39. return super.login(args, ctx, req, res);
  40. }
  41. @Transaction
  42. @Mutation()
  43. @Allow(Permission.Public)
  44. authenticate(
  45. @Args() args: MutationAuthenticateArgs,
  46. @Ctx() ctx: RequestContext,
  47. @Context('req') req: Request,
  48. @Context('res') res: Response,
  49. ): Promise<LoginResult> {
  50. return this.authenticateAndCreateSession(ctx, args, req, res);
  51. }
  52. @Transaction
  53. @Mutation()
  54. @Allow(Permission.Public)
  55. logout(
  56. @Ctx() ctx: RequestContext,
  57. @Context('req') req: Request,
  58. @Context('res') res: Response,
  59. ): Promise<boolean> {
  60. return super.logout(ctx, req, res);
  61. }
  62. @Query()
  63. @Allow(Permission.Authenticated, Permission.Owner)
  64. me(@Ctx() ctx: RequestContext) {
  65. return super.me(ctx, 'admin');
  66. }
  67. }