@natrave/shared-entities 1.6.0 → 1.6.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.
@@ -4,7 +4,10 @@ export declare class RefreshToken {
4
4
  createdAt: Date;
5
5
  expiresAt: Date;
6
6
  revokedAt: Date | null;
7
- token: string;
7
+ tokenHash: string;
8
+ usedAt: Date | null;
9
+ replacedByTokenId: string | null;
10
+ issuedSessionVersion: number;
8
11
  userId: string;
9
12
  user: User;
10
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-token.entity.d.ts","sourceRoot":"","sources":["../../../src/app-auth/refresh-tokens/refresh-token.entity.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAYhC,qBAEa,YAAY;IAEvB,EAAE,EAAE,MAAM,CAAC;IAOX,SAAS,EAAE,IAAI,CAAC;IAOhB,SAAS,EAAE,IAAI,CAAC;IAQhB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IAQvB,KAAK,EAAE,MAAM,CAAC;IAOd,MAAM,EAAE,MAAM,CAAC;IASf,IAAI,EAAE,IAAI,CAAC;CACZ"}
1
+ {"version":3,"file":"refresh-token.entity.d.ts","sourceRoot":"","sources":["../../../src/app-auth/refresh-tokens/refresh-token.entity.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAYhC,qBAKa,YAAY;IAEvB,EAAE,EAAE,MAAM,CAAC;IAOX,SAAS,EAAE,IAAI,CAAC;IAOhB,SAAS,EAAE,IAAI,CAAC;IAQhB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IAQvB,SAAS,EAAE,MAAM,CAAC;IAQlB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IAQpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAQjC,oBAAoB,EAAE,MAAM,CAAC;IAO7B,MAAM,EAAE,MAAM,CAAC;IASf,IAAI,EAAE,IAAI,CAAC;CACZ"}
@@ -12,10 +12,10 @@ import {
12
12
  Column,
13
13
  CreateDateColumn,
14
14
  Entity,
15
+ Index,
15
16
  JoinColumn,
16
17
  ManyToOne,
17
- PrimaryGeneratedColumn,
18
- Unique
18
+ PrimaryGeneratedColumn
19
19
  } from "typeorm";
20
20
  import { User } from "../users/index.js";
21
21
  let RefreshToken = class {
@@ -47,12 +47,36 @@ __decorateClass([
47
47
  ], RefreshToken.prototype, "revokedAt", 2);
48
48
  __decorateClass([
49
49
  Column({
50
- type: "varchar",
51
- length: 255,
52
- unique: true,
53
- comment: "Token de atualiza\xE7\xE3o propriamente dito, utilizado para renovar a sess\xE3o."
50
+ name: "token_hash",
51
+ type: "char",
52
+ length: 64,
53
+ comment: "Hash do refresh token para lookup e valida\xE7\xE3o sem armazenar o token em claro."
54
54
  })
55
- ], RefreshToken.prototype, "token", 2);
55
+ ], RefreshToken.prototype, "tokenHash", 2);
56
+ __decorateClass([
57
+ Column({
58
+ name: "used_at",
59
+ type: "timestamptz",
60
+ nullable: true,
61
+ comment: "Data e hora em que o refresh token foi utilizado."
62
+ })
63
+ ], RefreshToken.prototype, "usedAt", 2);
64
+ __decorateClass([
65
+ Column({
66
+ name: "replaced_by_token_id",
67
+ type: "uuid",
68
+ nullable: true,
69
+ comment: "ID do novo refresh token que substituiu este token."
70
+ })
71
+ ], RefreshToken.prototype, "replacedByTokenId", 2);
72
+ __decorateClass([
73
+ Column({
74
+ name: "issued_session_version",
75
+ type: "int",
76
+ default: 0,
77
+ comment: "Vers\xE3o da sess\xE3o do usu\xE1rio no momento da emiss\xE3o do refresh token."
78
+ })
79
+ ], RefreshToken.prototype, "issuedSessionVersion", 2);
56
80
  __decorateClass([
57
81
  Column({
58
82
  name: "user_id",
@@ -66,7 +90,10 @@ __decorateClass([
66
90
  ], RefreshToken.prototype, "user", 2);
67
91
  RefreshToken = __decorateClass([
68
92
  Entity("refresh_tokens"),
69
- Unique(["token"])
93
+ Index("UQ_refresh_tokens_token_hash", ["tokenHash"], {
94
+ unique: true
95
+ }),
96
+ Index("IDX_refresh_tokens_user_id_revoked_at", ["userId", "revokedAt"])
70
97
  ], RefreshToken);
71
98
  export {
72
99
  RefreshToken
@@ -19,6 +19,7 @@ export declare class User {
19
19
  cpfHash: string | null;
20
20
  phone: string | null;
21
21
  imageUrl: string | null;
22
+ sessionVersion: number;
22
23
  refreshTokens: RefreshToken[];
23
24
  userAuthProviders: UserAuthProvider[];
24
25
  player: Player;
@@ -1 +1 @@
1
- {"version":3,"file":"user.entity.d.ts","sourceRoot":"","sources":["../../../src/app-auth/users/user.entity.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAa7C,qBAiBa,IAAI;IAIf,EAAE,EAAE,MAAM,CAAC;IAUX,SAAS,EAAE,MAAM,CAAC;IAOlB,SAAS,EAAE,IAAI,CAAC;IAOhB,SAAS,EAAE,IAAI,CAAC;IAQhB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IASvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAQpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAQzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ3B,KAAK,EAAE,MAAM,CAAC;IAQd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAQtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAS5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAUvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IASrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAKxB,aAAa,EAAE,YAAY,EAAE,CAAC;IAK9B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAKtC,MAAM,EAAE,MAAM,CAAC;IAGf,aAAa,EAAE,YAAY,EAAE,CAAC;IAG9B,gBAAgB,EAAE,eAAe,EAAE,CAAC;IAMpC,sBAAsB,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAG1D,8BAA8B,EAAE,6BAA6B,EAAE,CAAC;IAMhE,WAAW,IAAI,IAAI;CAGpB"}
1
+ {"version":3,"file":"user.entity.d.ts","sourceRoot":"","sources":["../../../src/app-auth/users/user.entity.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAa7C,qBAkBa,IAAI;IAIf,EAAE,EAAE,MAAM,CAAC;IAUX,SAAS,EAAE,MAAM,CAAC;IAOlB,SAAS,EAAE,IAAI,CAAC;IAOhB,SAAS,EAAE,IAAI,CAAC;IAQhB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IASvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAQpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAQzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ3B,KAAK,EAAE,MAAM,CAAC;IAQd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAQtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAS5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAUvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IASrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAQxB,cAAc,EAAE,MAAM,CAAC;IAKvB,aAAa,EAAE,YAAY,EAAE,CAAC;IAK9B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAKtC,MAAM,EAAE,MAAM,CAAC;IAGf,aAAa,EAAE,YAAY,EAAE,CAAC;IAG9B,gBAAgB,EAAE,eAAe,EAAE,CAAC;IAMpC,sBAAsB,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAG1D,8BAA8B,EAAE,6BAA6B,EAAE,CAAC;IAMhE,WAAW,IAAI,IAAI;CAGpB"}
@@ -147,6 +147,14 @@ __decorateClass([
147
147
  comment: "URL da imagem de perfil do usu\xE1rio."
148
148
  })
149
149
  ], User.prototype, "imageUrl", 2);
150
+ __decorateClass([
151
+ Column({
152
+ name: "session_version",
153
+ type: "int",
154
+ default: 0,
155
+ comment: "Vers\xE3o atual de sess\xE3o do usu\xE1rio para invalida\xE7\xE3o global de refresh tokens."
156
+ })
157
+ ], User.prototype, "sessionVersion", 2);
150
158
  __decorateClass([
151
159
  OneToMany(() => RefreshToken, (refreshToken) => refreshToken.user)
152
160
  ], User.prototype, "refreshTokens", 2);
@@ -195,7 +203,8 @@ User = __decorateClass([
195
203
  Index("IDX_users_created_at", ["createdAt"]),
196
204
  Index("IDX_users_updated_at", ["updatedAt"]),
197
205
  Index("IDX_users_name", ["name"], { where: '"deleted_at" IS NULL' }),
198
- Index("IDX_users_gender", ["gender"], { where: '"deleted_at" IS NULL' })
206
+ Index("IDX_users_gender", ["gender"], { where: '"deleted_at" IS NULL' }),
207
+ Index("IDX_users_id_session_version", ["id", "sessionVersion"])
199
208
  ], User);
200
209
  export {
201
210
  User
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@natrave/shared-entities",
3
- "version": "1.6.0",
3
+ "version": "1.6.2",
4
4
  "description": "Entidades compartilhadass da NaTrave",
5
5
  "module": "dist/index.js",
6
6
  "main": "dist/index.js",