@lenne.tech/nest-server 2.0.4 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/config.env.js +14 -1
  2. package/dist/config.env.js.map +1 -1
  3. package/dist/core/common/helpers/service.helper.d.ts +3 -1
  4. package/dist/core/common/helpers/service.helper.js +23 -1
  5. package/dist/core/common/helpers/service.helper.js.map +1 -1
  6. package/dist/core/common/interfaces/mailjet-options.interface.d.ts +4 -0
  7. package/dist/core/common/interfaces/mailjet-options.interface.js +3 -0
  8. package/dist/core/common/interfaces/mailjet-options.interface.js.map +1 -0
  9. package/dist/core/common/interfaces/server-options.interface.d.ts +4 -0
  10. package/dist/core/common/services/mailjet.service.d.ts +15 -0
  11. package/dist/core/common/services/mailjet.service.js +64 -0
  12. package/dist/core/common/services/mailjet.service.js.map +1 -0
  13. package/dist/core/modules/user/core-basic-user.service.d.ts +1 -1
  14. package/dist/core/modules/user/core-user.model.d.ts +3 -0
  15. package/dist/core/modules/user/core-user.model.js +17 -0
  16. package/dist/core/modules/user/core-user.model.js.map +1 -1
  17. package/dist/core/modules/user/core-user.service.d.ts +10 -4
  18. package/dist/core/modules/user/core-user.service.js +72 -3
  19. package/dist/core/modules/user/core-user.service.js.map +1 -1
  20. package/dist/core.module.js +3 -1
  21. package/dist/core.module.js.map +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.js +1 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/server/modules/user/user.model.d.ts +1 -1
  26. package/dist/server/modules/user/user.resolver.d.ts +3 -0
  27. package/dist/server/modules/user/user.resolver.js +31 -0
  28. package/dist/server/modules/user/user.resolver.js.map +1 -1
  29. package/dist/server/modules/user/user.service.js +3 -4
  30. package/dist/server/modules/user/user.service.js.map +1 -1
  31. package/dist/server/server.module.js.map +1 -1
  32. package/dist/test/test.helper.js +1 -1
  33. package/dist/test/test.helper.js.map +1 -1
  34. package/dist/tsconfig.build.tsbuildinfo +1 -1
  35. package/package.json +42 -48
  36. package/src/config.env.ts +14 -1
  37. package/src/core/common/helpers/service.helper.ts +34 -4
  38. package/src/core/common/interfaces/mailjet-options.interface.ts +4 -0
  39. package/src/core/common/interfaces/server-options.interface.ts +12 -0
  40. package/src/core/common/services/mailjet.service.ts +84 -0
  41. package/src/core/modules/user/core-basic-user.service.ts +3 -3
  42. package/src/core/modules/user/core-user.model.ts +20 -0
  43. package/src/core/modules/user/core-user.service.ts +131 -10
  44. package/src/core.module.ts +3 -1
  45. package/src/index.ts +1 -0
  46. package/src/server/modules/user/user.resolver.ts +24 -0
  47. package/src/server/modules/user/user.service.ts +6 -4
  48. package/src/server/server.module.ts +0 -1
  49. package/src/templates/password-reset.ejs +3 -0
  50. package/src/templates/welcome.ejs +3 -2
  51. package/src/test/test.helper.ts +2 -2
@@ -43,9 +43,33 @@ export class UserResolver {
43
43
  return await this.usersService.find(args, info);
44
44
  }
45
45
 
46
+ /**
47
+ * Request new password for user with email
48
+ */
49
+ @Query((returns) => Boolean, { description: 'Request new password for user with email' })
50
+ async requestPasswordResetMail(@Args('email') email: string) {
51
+ return await this.usersService.requestPasswordResetMail(email);
52
+ }
53
+
46
54
  // ===========================================================================
47
55
  // Mutations
48
56
  // ===========================================================================
57
+ /**
58
+ * Verify user with email
59
+ */
60
+ @Mutation((returns) => Boolean, { description: 'Verify user with email' })
61
+ async verifyUser(@Args('token') token: string) {
62
+ return await this.usersService.verify(token);
63
+ }
64
+
65
+ /**
66
+ * Set new password for user with token
67
+ */
68
+ @Mutation((returns) => Boolean, { description: 'Set new password for user with token' })
69
+ async resetPassword(@Args('token') token: string, @Args('password') password: string) {
70
+ return await this.usersService.resetPassword(token, password);
71
+ }
72
+
49
73
  /**
50
74
  * Create new user
51
75
  */
@@ -42,7 +42,7 @@ export class UserService extends CoreUserService<User, UserInput, UserCreateInpu
42
42
  @InjectModel('User') protected readonly userModel: Model<User>,
43
43
  @Inject('PUB_SUB') protected readonly pubSub: PubSub
44
44
  ) {
45
- super(userModel);
45
+ super(userModel, emailService);
46
46
  this.model = User;
47
47
  }
48
48
 
@@ -55,12 +55,14 @@ export class UserService extends CoreUserService<User, UserInput, UserCreateInpu
55
55
  */
56
56
  async create(input: UserCreateInput, currentUser?: User, ...args: any[]): Promise<User> {
57
57
  const user = await super.create(input, currentUser);
58
- const text = `Welcome ${user.firstName}, this is plain text from server.`;
58
+
59
+ await this.prepareOutput(user, args[0]);
60
+
59
61
  await this.pubSub.publish('userCreated', User.map(user));
62
+
60
63
  await this.emailService.sendMail(user.email, 'Welcome', {
61
64
  htmlTemplate: 'welcome',
62
- templateData: user,
63
- text,
65
+ templateData: { name: user.username, link: envConfig.email.verificationLink + '/' + user.verificationToken },
64
66
  });
65
67
 
66
68
  return user;
@@ -4,7 +4,6 @@ import { CoreModule } from '../core.module';
4
4
  import { AuthModule } from './modules/auth/auth.module';
5
5
  import { FileController } from './modules/file/file.controller';
6
6
  import { ServerController } from './server.controller';
7
- import { PubSub } from 'graphql-subscriptions';
8
7
 
9
8
  /**
10
9
  * Server module (dynamic)
@@ -0,0 +1,3 @@
1
+ <h1>Hello <%= name %>,</h1>
2
+ <p>you requested a link for setting a new password. Here it is.</p><br />
3
+ <a href="<%= link %>">Passwort zurücksetzten</a>
@@ -1,2 +1,3 @@
1
- <h1>Welcome <%= firstName %></h1>
2
- <p>This is a EJS template from server.</p>
1
+ <h1>Welcome <%= name %>,</h1>
2
+ <p>please confirm your email address.</p>
3
+ <a href="<%= link %>">E-Mail bestätigen</a>
@@ -113,7 +113,7 @@ export class TestHelper {
113
113
  /**
114
114
  * GraphQL request
115
115
  * @param graphql
116
- * @param statusCode
116
+ * @param options
117
117
  */
118
118
  async graphQl(graphql: string | TestGraphQLConfig, options: TestGraphQLOptions = {}): Promise<any> {
119
119
  // Default options
@@ -148,7 +148,7 @@ export class TestHelper {
148
148
  graphql = Object.assign(
149
149
  {
150
150
  arguments: null,
151
- fields: ['id'],
151
+ fields: [],
152
152
  name: null,
153
153
  type: TestGraphQLType.QUERY,
154
154
  },