@spfn/auth 0.1.0-alpha.87 → 0.2.0-beta.1

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 (151) hide show
  1. package/README.md +1385 -1199
  2. package/dist/config.d.ts +405 -0
  3. package/dist/config.js +240 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/dto-81uR9gzF.d.ts +630 -0
  6. package/dist/errors.d.ts +196 -0
  7. package/dist/errors.js +173 -0
  8. package/dist/errors.js.map +1 -0
  9. package/dist/index.d.ts +273 -14
  10. package/dist/index.js +511 -6665
  11. package/dist/index.js.map +1 -1
  12. package/dist/nextjs/api.js +345 -0
  13. package/dist/nextjs/api.js.map +1 -0
  14. package/dist/{adapters/nextjs → nextjs}/server.d.ts +47 -65
  15. package/dist/nextjs/server.js +179 -0
  16. package/dist/nextjs/server.js.map +1 -0
  17. package/dist/server.d.ts +4328 -529
  18. package/dist/server.js +7841 -1247
  19. package/dist/server.js.map +1 -1
  20. package/migrations/{0000_familiar_firebrand.sql → 0000_mysterious_colossus.sql} +53 -23
  21. package/migrations/meta/0000_snapshot.json +281 -46
  22. package/migrations/meta/_journal.json +2 -2
  23. package/package.json +33 -33
  24. package/dist/adapters/nextjs/api.d.ts +0 -446
  25. package/dist/adapters/nextjs/api.js +0 -3279
  26. package/dist/adapters/nextjs/api.js.map +0 -1
  27. package/dist/adapters/nextjs/server.js +0 -3645
  28. package/dist/adapters/nextjs/server.js.map +0 -1
  29. package/dist/lib/api/auth-codes-verify.d.ts +0 -37
  30. package/dist/lib/api/auth-codes-verify.js +0 -2949
  31. package/dist/lib/api/auth-codes-verify.js.map +0 -1
  32. package/dist/lib/api/auth-codes.d.ts +0 -37
  33. package/dist/lib/api/auth-codes.js +0 -2949
  34. package/dist/lib/api/auth-codes.js.map +0 -1
  35. package/dist/lib/api/auth-exists.d.ts +0 -38
  36. package/dist/lib/api/auth-exists.js +0 -2949
  37. package/dist/lib/api/auth-exists.js.map +0 -1
  38. package/dist/lib/api/auth-invitations-accept.d.ts +0 -38
  39. package/dist/lib/api/auth-invitations-accept.js +0 -2883
  40. package/dist/lib/api/auth-invitations-accept.js.map +0 -1
  41. package/dist/lib/api/auth-invitations-cancel.d.ts +0 -37
  42. package/dist/lib/api/auth-invitations-cancel.js +0 -2883
  43. package/dist/lib/api/auth-invitations-cancel.js.map +0 -1
  44. package/dist/lib/api/auth-invitations-delete.d.ts +0 -36
  45. package/dist/lib/api/auth-invitations-delete.js +0 -2883
  46. package/dist/lib/api/auth-invitations-delete.js.map +0 -1
  47. package/dist/lib/api/auth-invitations-resend.d.ts +0 -37
  48. package/dist/lib/api/auth-invitations-resend.js +0 -2883
  49. package/dist/lib/api/auth-invitations-resend.js.map +0 -1
  50. package/dist/lib/api/auth-invitations.d.ts +0 -109
  51. package/dist/lib/api/auth-invitations.js +0 -2887
  52. package/dist/lib/api/auth-invitations.js.map +0 -1
  53. package/dist/lib/api/auth-keys-rotate.d.ts +0 -37
  54. package/dist/lib/api/auth-keys-rotate.js +0 -2949
  55. package/dist/lib/api/auth-keys-rotate.js.map +0 -1
  56. package/dist/lib/api/auth-login.d.ts +0 -39
  57. package/dist/lib/api/auth-login.js +0 -2949
  58. package/dist/lib/api/auth-login.js.map +0 -1
  59. package/dist/lib/api/auth-logout.d.ts +0 -36
  60. package/dist/lib/api/auth-logout.js +0 -2949
  61. package/dist/lib/api/auth-logout.js.map +0 -1
  62. package/dist/lib/api/auth-me.d.ts +0 -50
  63. package/dist/lib/api/auth-me.js +0 -2949
  64. package/dist/lib/api/auth-me.js.map +0 -1
  65. package/dist/lib/api/auth-password.d.ts +0 -36
  66. package/dist/lib/api/auth-password.js +0 -2949
  67. package/dist/lib/api/auth-password.js.map +0 -1
  68. package/dist/lib/api/auth-register.d.ts +0 -38
  69. package/dist/lib/api/auth-register.js +0 -2949
  70. package/dist/lib/api/auth-register.js.map +0 -1
  71. package/dist/lib/api/index.d.ts +0 -356
  72. package/dist/lib/api/index.js +0 -3261
  73. package/dist/lib/api/index.js.map +0 -1
  74. package/dist/lib/config.d.ts +0 -70
  75. package/dist/lib/config.js +0 -64
  76. package/dist/lib/config.js.map +0 -1
  77. package/dist/lib/contracts/auth.d.ts +0 -302
  78. package/dist/lib/contracts/auth.js +0 -2951
  79. package/dist/lib/contracts/auth.js.map +0 -1
  80. package/dist/lib/contracts/index.d.ts +0 -3
  81. package/dist/lib/contracts/index.js +0 -3190
  82. package/dist/lib/contracts/index.js.map +0 -1
  83. package/dist/lib/contracts/invitation.d.ts +0 -243
  84. package/dist/lib/contracts/invitation.js +0 -2883
  85. package/dist/lib/contracts/invitation.js.map +0 -1
  86. package/dist/lib/crypto.d.ts +0 -76
  87. package/dist/lib/crypto.js +0 -127
  88. package/dist/lib/crypto.js.map +0 -1
  89. package/dist/lib/index.d.ts +0 -4
  90. package/dist/lib/index.js +0 -313
  91. package/dist/lib/index.js.map +0 -1
  92. package/dist/lib/session.d.ts +0 -68
  93. package/dist/lib/session.js +0 -126
  94. package/dist/lib/session.js.map +0 -1
  95. package/dist/lib/types/api.d.ts +0 -45
  96. package/dist/lib/types/api.js +0 -1
  97. package/dist/lib/types/api.js.map +0 -1
  98. package/dist/lib/types/index.d.ts +0 -3
  99. package/dist/lib/types/index.js +0 -2647
  100. package/dist/lib/types/index.js.map +0 -1
  101. package/dist/lib/types/schemas.d.ts +0 -45
  102. package/dist/lib/types/schemas.js +0 -2647
  103. package/dist/lib/types/schemas.js.map +0 -1
  104. package/dist/lib.js +0 -1
  105. package/dist/lib.js.map +0 -1
  106. package/dist/plugin.d.ts +0 -12
  107. package/dist/plugin.js +0 -9083
  108. package/dist/plugin.js.map +0 -1
  109. package/dist/server/entities/index.d.ts +0 -11
  110. package/dist/server/entities/index.js +0 -395
  111. package/dist/server/entities/index.js.map +0 -1
  112. package/dist/server/entities/invitations.d.ts +0 -241
  113. package/dist/server/entities/invitations.js +0 -184
  114. package/dist/server/entities/invitations.js.map +0 -1
  115. package/dist/server/entities/permissions.d.ts +0 -196
  116. package/dist/server/entities/permissions.js +0 -49
  117. package/dist/server/entities/permissions.js.map +0 -1
  118. package/dist/server/entities/role-permissions.d.ts +0 -107
  119. package/dist/server/entities/role-permissions.js +0 -115
  120. package/dist/server/entities/role-permissions.js.map +0 -1
  121. package/dist/server/entities/roles.d.ts +0 -196
  122. package/dist/server/entities/roles.js +0 -50
  123. package/dist/server/entities/roles.js.map +0 -1
  124. package/dist/server/entities/schema.d.ts +0 -14
  125. package/dist/server/entities/schema.js +0 -7
  126. package/dist/server/entities/schema.js.map +0 -1
  127. package/dist/server/entities/user-permissions.d.ts +0 -163
  128. package/dist/server/entities/user-permissions.js +0 -193
  129. package/dist/server/entities/user-permissions.js.map +0 -1
  130. package/dist/server/entities/user-public-keys.d.ts +0 -227
  131. package/dist/server/entities/user-public-keys.js +0 -156
  132. package/dist/server/entities/user-public-keys.js.map +0 -1
  133. package/dist/server/entities/user-social-accounts.d.ts +0 -189
  134. package/dist/server/entities/user-social-accounts.js +0 -149
  135. package/dist/server/entities/user-social-accounts.js.map +0 -1
  136. package/dist/server/entities/users.d.ts +0 -235
  137. package/dist/server/entities/users.js +0 -117
  138. package/dist/server/entities/users.js.map +0 -1
  139. package/dist/server/entities/verification-codes.d.ts +0 -191
  140. package/dist/server/entities/verification-codes.js +0 -49
  141. package/dist/server/entities/verification-codes.js.map +0 -1
  142. package/dist/server/routes/auth/index.d.ts +0 -10
  143. package/dist/server/routes/auth/index.js +0 -4460
  144. package/dist/server/routes/auth/index.js.map +0 -1
  145. package/dist/server/routes/index.d.ts +0 -6
  146. package/dist/server/routes/index.js +0 -6584
  147. package/dist/server/routes/index.js.map +0 -1
  148. package/dist/server/routes/invitations/index.d.ts +0 -10
  149. package/dist/server/routes/invitations/index.js +0 -4395
  150. package/dist/server/routes/invitations/index.js.map +0 -1
  151. /package/dist/{lib.d.ts → nextjs/api.d.ts} +0 -0
@@ -6,7 +6,7 @@ CREATE TABLE "spfn_auth"."users" (
6
6
  "phone" text,
7
7
  "password_hash" text,
8
8
  "password_change_required" boolean DEFAULT false NOT NULL,
9
- "role_id" bigint NOT NULL,
9
+ "role_id" bigserial NOT NULL,
10
10
  "status" text DEFAULT 'active' NOT NULL,
11
11
  "email_verified_at" timestamp with time zone,
12
12
  "phone_verified_at" timestamp with time zone,
@@ -18,17 +18,26 @@ CREATE TABLE "spfn_auth"."users" (
18
18
  CONSTRAINT "email_or_phone_check" CHECK ("spfn_auth"."users"."email" IS NOT NULL OR "spfn_auth"."users"."phone" IS NOT NULL)
19
19
  );
20
20
  --> statement-breakpoint
21
- CREATE TABLE "spfn_auth"."user_social_accounts" (
21
+ CREATE TABLE "spfn_auth"."user_profiles" (
22
22
  "id" bigserial PRIMARY KEY NOT NULL,
23
23
  "user_id" bigserial NOT NULL,
24
- "provider" text NOT NULL,
25
- "provider_user_id" text NOT NULL,
26
- "provider_email" text,
27
- "access_token" text,
28
- "refresh_token" text,
29
- "token_expires_at" timestamp with time zone,
24
+ "display_name" text NOT NULL,
25
+ "first_name" text,
26
+ "last_name" text,
27
+ "avatar_url" text,
28
+ "bio" text,
29
+ "locale" text DEFAULT 'en',
30
+ "timezone" text DEFAULT 'UTC',
31
+ "date_of_birth" text,
32
+ "gender" text,
33
+ "website" text,
34
+ "location" text,
35
+ "company" text,
36
+ "job_title" text,
37
+ "metadata" jsonb,
30
38
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
31
- "updated_at" timestamp with time zone DEFAULT now() NOT NULL
39
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
40
+ CONSTRAINT "user_profiles_user_id_unique" UNIQUE("user_id")
32
41
  );
33
42
  --> statement-breakpoint
34
43
  CREATE TABLE "spfn_auth"."user_public_keys" (
@@ -47,6 +56,19 @@ CREATE TABLE "spfn_auth"."user_public_keys" (
47
56
  CONSTRAINT "user_public_keys_key_id_unique" UNIQUE("key_id")
48
57
  );
49
58
  --> statement-breakpoint
59
+ CREATE TABLE "spfn_auth"."user_social_accounts" (
60
+ "id" bigserial PRIMARY KEY NOT NULL,
61
+ "user_id" bigserial NOT NULL,
62
+ "provider" text NOT NULL,
63
+ "provider_user_id" text NOT NULL,
64
+ "provider_email" text,
65
+ "access_token" text,
66
+ "refresh_token" text,
67
+ "token_expires_at" timestamp with time zone,
68
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
69
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
70
+ );
71
+ --> statement-breakpoint
50
72
  CREATE TABLE "spfn_auth"."verification_codes" (
51
73
  "id" bigserial PRIMARY KEY NOT NULL,
52
74
  "target" text NOT NULL,
@@ -55,17 +77,18 @@ CREATE TABLE "spfn_auth"."verification_codes" (
55
77
  "purpose" text NOT NULL,
56
78
  "expires_at" timestamp with time zone NOT NULL,
57
79
  "used_at" timestamp with time zone,
58
- "attempts" text DEFAULT '0' NOT NULL,
80
+ "attempts" integer DEFAULT 0 NOT NULL,
59
81
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
60
- "updated_at" timestamp with time zone DEFAULT now() NOT NULL
82
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
83
+ CONSTRAINT "attempts_limit_check" CHECK ("spfn_auth"."verification_codes"."attempts" >= 0 AND "spfn_auth"."verification_codes"."attempts" <= 10)
61
84
  );
62
85
  --> statement-breakpoint
63
86
  CREATE TABLE "spfn_auth"."user_invitations" (
64
87
  "id" bigserial PRIMARY KEY NOT NULL,
65
88
  "email" text NOT NULL,
66
89
  "token" text NOT NULL,
67
- "role_id" bigint NOT NULL,
68
- "invited_by" bigint NOT NULL,
90
+ "role_id" bigserial NOT NULL,
91
+ "invited_by_id" bigserial NOT NULL,
69
92
  "status" text DEFAULT 'pending' NOT NULL,
70
93
  "expires_at" timestamp with time zone NOT NULL,
71
94
  "accepted_at" timestamp with time zone,
@@ -99,6 +122,7 @@ CREATE TABLE "spfn_auth"."permissions" (
99
122
  "is_builtin" boolean DEFAULT false NOT NULL,
100
123
  "is_system" boolean DEFAULT false NOT NULL,
101
124
  "is_active" boolean DEFAULT true NOT NULL,
125
+ "metadata" jsonb,
102
126
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
103
127
  "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
104
128
  CONSTRAINT "permissions_name_unique" UNIQUE("name")
@@ -106,8 +130,8 @@ CREATE TABLE "spfn_auth"."permissions" (
106
130
  --> statement-breakpoint
107
131
  CREATE TABLE "spfn_auth"."role_permissions" (
108
132
  "id" bigserial PRIMARY KEY NOT NULL,
109
- "role_id" bigint NOT NULL,
110
- "permission_id" bigint NOT NULL,
133
+ "role_id" bigserial NOT NULL,
134
+ "permission_id" bigserial NOT NULL,
111
135
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
112
136
  "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
113
137
  CONSTRAINT "role_permissions_unique" UNIQUE("role_id","permission_id")
@@ -115,8 +139,8 @@ CREATE TABLE "spfn_auth"."role_permissions" (
115
139
  --> statement-breakpoint
116
140
  CREATE TABLE "spfn_auth"."user_permissions" (
117
141
  "id" bigserial PRIMARY KEY NOT NULL,
118
- "user_id" bigint NOT NULL,
119
- "permission_id" bigint NOT NULL,
142
+ "user_id" bigserial NOT NULL,
143
+ "permission_id" bigserial NOT NULL,
120
144
  "granted" boolean DEFAULT true NOT NULL,
121
145
  "reason" text,
122
146
  "expires_at" timestamp with time zone,
@@ -125,11 +149,12 @@ CREATE TABLE "spfn_auth"."user_permissions" (
125
149
  CONSTRAINT "user_permissions_unique" UNIQUE("user_id","permission_id")
126
150
  );
127
151
  --> statement-breakpoint
128
- ALTER TABLE "spfn_auth"."users" ADD CONSTRAINT "users_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "spfn_auth"."roles"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
129
- ALTER TABLE "spfn_auth"."user_social_accounts" ADD CONSTRAINT "user_social_accounts_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
152
+ ALTER TABLE "spfn_auth"."users" ADD CONSTRAINT "users_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "spfn_auth"."roles"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
153
+ ALTER TABLE "spfn_auth"."user_profiles" ADD CONSTRAINT "user_profiles_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
130
154
  ALTER TABLE "spfn_auth"."user_public_keys" ADD CONSTRAINT "user_public_keys_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
131
- ALTER TABLE "spfn_auth"."user_invitations" ADD CONSTRAINT "user_invitations_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "spfn_auth"."roles"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
132
- ALTER TABLE "spfn_auth"."user_invitations" ADD CONSTRAINT "user_invitations_invited_by_users_id_fk" FOREIGN KEY ("invited_by") REFERENCES "spfn_auth"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
155
+ ALTER TABLE "spfn_auth"."user_social_accounts" ADD CONSTRAINT "user_social_accounts_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
156
+ ALTER TABLE "spfn_auth"."user_invitations" ADD CONSTRAINT "user_invitations_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "spfn_auth"."roles"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
157
+ ALTER TABLE "spfn_auth"."user_invitations" ADD CONSTRAINT "user_invitations_invited_by_id_users_id_fk" FOREIGN KEY ("invited_by_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
133
158
  ALTER TABLE "spfn_auth"."role_permissions" ADD CONSTRAINT "role_permissions_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "spfn_auth"."roles"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
134
159
  ALTER TABLE "spfn_auth"."role_permissions" ADD CONSTRAINT "role_permissions_permission_id_permissions_id_fk" FOREIGN KEY ("permission_id") REFERENCES "spfn_auth"."permissions"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
135
160
  ALTER TABLE "spfn_auth"."user_permissions" ADD CONSTRAINT "user_permissions_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "spfn_auth"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
@@ -138,16 +163,21 @@ CREATE INDEX "users_email_idx" ON "spfn_auth"."users" USING btree ("email");-->
138
163
  CREATE INDEX "users_phone_idx" ON "spfn_auth"."users" USING btree ("phone");--> statement-breakpoint
139
164
  CREATE INDEX "users_status_idx" ON "spfn_auth"."users" USING btree ("status");--> statement-breakpoint
140
165
  CREATE INDEX "users_role_id_idx" ON "spfn_auth"."users" USING btree ("role_id");--> statement-breakpoint
141
- CREATE UNIQUE INDEX "provider_user_unique_idx" ON "spfn_auth"."user_social_accounts" USING btree ("provider","provider_user_id");--> statement-breakpoint
166
+ CREATE INDEX "user_profiles_user_id_idx" ON "spfn_auth"."user_profiles" USING btree ("user_id");--> statement-breakpoint
167
+ CREATE INDEX "user_profiles_display_name_idx" ON "spfn_auth"."user_profiles" USING btree ("display_name");--> statement-breakpoint
168
+ CREATE INDEX "user_profiles_locale_idx" ON "spfn_auth"."user_profiles" USING btree ("locale");--> statement-breakpoint
142
169
  CREATE INDEX "user_public_keys_user_id_idx" ON "spfn_auth"."user_public_keys" USING btree ("user_id");--> statement-breakpoint
143
170
  CREATE INDEX "user_public_keys_key_id_idx" ON "spfn_auth"."user_public_keys" USING btree ("key_id");--> statement-breakpoint
144
171
  CREATE INDEX "user_public_keys_active_idx" ON "spfn_auth"."user_public_keys" USING btree ("is_active");--> statement-breakpoint
145
172
  CREATE INDEX "user_public_keys_fingerprint_idx" ON "spfn_auth"."user_public_keys" USING btree ("fingerprint");--> statement-breakpoint
173
+ CREATE INDEX "user_social_accounts_user_id_idx" ON "spfn_auth"."user_social_accounts" USING btree ("user_id");--> statement-breakpoint
174
+ CREATE INDEX "user_social_accounts_provider_idx" ON "spfn_auth"."user_social_accounts" USING btree ("provider");--> statement-breakpoint
175
+ CREATE UNIQUE INDEX "provider_user_unique_idx" ON "spfn_auth"."user_social_accounts" USING btree ("provider","provider_user_id");--> statement-breakpoint
146
176
  CREATE INDEX "target_purpose_idx" ON "spfn_auth"."verification_codes" USING btree ("target","purpose","expires_at");--> statement-breakpoint
147
177
  CREATE INDEX "invitations_token_idx" ON "spfn_auth"."user_invitations" USING btree ("token");--> statement-breakpoint
148
178
  CREATE INDEX "invitations_email_idx" ON "spfn_auth"."user_invitations" USING btree ("email");--> statement-breakpoint
149
179
  CREATE INDEX "invitations_status_idx" ON "spfn_auth"."user_invitations" USING btree ("status");--> statement-breakpoint
150
- CREATE INDEX "invitations_invited_by_idx" ON "spfn_auth"."user_invitations" USING btree ("invited_by");--> statement-breakpoint
180
+ CREATE INDEX "invitations_invited_by_idx" ON "spfn_auth"."user_invitations" USING btree ("invited_by_id");--> statement-breakpoint
151
181
  CREATE INDEX "invitations_expires_at_idx" ON "spfn_auth"."user_invitations" USING btree ("expires_at");--> statement-breakpoint
152
182
  CREATE INDEX "invitations_role_id_idx" ON "spfn_auth"."user_invitations" USING btree ("role_id");--> statement-breakpoint
153
183
  CREATE INDEX "roles_name_idx" ON "spfn_auth"."roles" USING btree ("name");--> statement-breakpoint
@@ -1,5 +1,5 @@
1
1
  {
2
- "id": "aff66ff0-ff89-4e72-a716-41084ec7e906",
2
+ "id": "7dedce95-7ceb-4691-aaad-0989041d8828",
3
3
  "prevId": "00000000-0000-0000-0000-000000000000",
4
4
  "version": "7",
5
5
  "dialect": "postgresql",
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "role_id": {
43
43
  "name": "role_id",
44
- "type": "bigint",
44
+ "type": "bigserial",
45
45
  "primaryKey": false,
46
46
  "notNull": true
47
47
  },
@@ -159,7 +159,7 @@
159
159
  "columnsTo": [
160
160
  "id"
161
161
  ],
162
- "onDelete": "no action",
162
+ "onDelete": "cascade",
163
163
  "onUpdate": "no action"
164
164
  }
165
165
  },
@@ -189,8 +189,8 @@
189
189
  },
190
190
  "isRLSEnabled": false
191
191
  },
192
- "spfn_auth.user_social_accounts": {
193
- "name": "user_social_accounts",
192
+ "spfn_auth.user_profiles": {
193
+ "name": "user_profiles",
194
194
  "schema": "spfn_auth",
195
195
  "columns": {
196
196
  "id": {
@@ -205,39 +205,89 @@
205
205
  "primaryKey": false,
206
206
  "notNull": true
207
207
  },
208
- "provider": {
209
- "name": "provider",
208
+ "display_name": {
209
+ "name": "display_name",
210
210
  "type": "text",
211
211
  "primaryKey": false,
212
212
  "notNull": true
213
213
  },
214
- "provider_user_id": {
215
- "name": "provider_user_id",
214
+ "first_name": {
215
+ "name": "first_name",
216
216
  "type": "text",
217
217
  "primaryKey": false,
218
- "notNull": true
218
+ "notNull": false
219
219
  },
220
- "provider_email": {
221
- "name": "provider_email",
220
+ "last_name": {
221
+ "name": "last_name",
222
222
  "type": "text",
223
223
  "primaryKey": false,
224
224
  "notNull": false
225
225
  },
226
- "access_token": {
227
- "name": "access_token",
226
+ "avatar_url": {
227
+ "name": "avatar_url",
228
228
  "type": "text",
229
229
  "primaryKey": false,
230
230
  "notNull": false
231
231
  },
232
- "refresh_token": {
233
- "name": "refresh_token",
232
+ "bio": {
233
+ "name": "bio",
234
234
  "type": "text",
235
235
  "primaryKey": false,
236
236
  "notNull": false
237
237
  },
238
- "token_expires_at": {
239
- "name": "token_expires_at",
240
- "type": "timestamp with time zone",
238
+ "locale": {
239
+ "name": "locale",
240
+ "type": "text",
241
+ "primaryKey": false,
242
+ "notNull": false,
243
+ "default": "'en'"
244
+ },
245
+ "timezone": {
246
+ "name": "timezone",
247
+ "type": "text",
248
+ "primaryKey": false,
249
+ "notNull": false,
250
+ "default": "'UTC'"
251
+ },
252
+ "date_of_birth": {
253
+ "name": "date_of_birth",
254
+ "type": "text",
255
+ "primaryKey": false,
256
+ "notNull": false
257
+ },
258
+ "gender": {
259
+ "name": "gender",
260
+ "type": "text",
261
+ "primaryKey": false,
262
+ "notNull": false
263
+ },
264
+ "website": {
265
+ "name": "website",
266
+ "type": "text",
267
+ "primaryKey": false,
268
+ "notNull": false
269
+ },
270
+ "location": {
271
+ "name": "location",
272
+ "type": "text",
273
+ "primaryKey": false,
274
+ "notNull": false
275
+ },
276
+ "company": {
277
+ "name": "company",
278
+ "type": "text",
279
+ "primaryKey": false,
280
+ "notNull": false
281
+ },
282
+ "job_title": {
283
+ "name": "job_title",
284
+ "type": "text",
285
+ "primaryKey": false,
286
+ "notNull": false
287
+ },
288
+ "metadata": {
289
+ "name": "metadata",
290
+ "type": "jsonb",
241
291
  "primaryKey": false,
242
292
  "notNull": false
243
293
  },
@@ -257,32 +307,56 @@
257
307
  }
258
308
  },
259
309
  "indexes": {
260
- "provider_user_unique_idx": {
261
- "name": "provider_user_unique_idx",
310
+ "user_profiles_user_id_idx": {
311
+ "name": "user_profiles_user_id_idx",
262
312
  "columns": [
263
313
  {
264
- "expression": "provider",
314
+ "expression": "user_id",
265
315
  "isExpression": false,
266
316
  "asc": true,
267
317
  "nulls": "last"
268
- },
318
+ }
319
+ ],
320
+ "isUnique": false,
321
+ "concurrently": false,
322
+ "method": "btree",
323
+ "with": {}
324
+ },
325
+ "user_profiles_display_name_idx": {
326
+ "name": "user_profiles_display_name_idx",
327
+ "columns": [
269
328
  {
270
- "expression": "provider_user_id",
329
+ "expression": "display_name",
271
330
  "isExpression": false,
272
331
  "asc": true,
273
332
  "nulls": "last"
274
333
  }
275
334
  ],
276
- "isUnique": true,
335
+ "isUnique": false,
336
+ "concurrently": false,
337
+ "method": "btree",
338
+ "with": {}
339
+ },
340
+ "user_profiles_locale_idx": {
341
+ "name": "user_profiles_locale_idx",
342
+ "columns": [
343
+ {
344
+ "expression": "locale",
345
+ "isExpression": false,
346
+ "asc": true,
347
+ "nulls": "last"
348
+ }
349
+ ],
350
+ "isUnique": false,
277
351
  "concurrently": false,
278
352
  "method": "btree",
279
353
  "with": {}
280
354
  }
281
355
  },
282
356
  "foreignKeys": {
283
- "user_social_accounts_user_id_users_id_fk": {
284
- "name": "user_social_accounts_user_id_users_id_fk",
285
- "tableFrom": "user_social_accounts",
357
+ "user_profiles_user_id_users_id_fk": {
358
+ "name": "user_profiles_user_id_users_id_fk",
359
+ "tableFrom": "user_profiles",
286
360
  "tableTo": "users",
287
361
  "schemaTo": "spfn_auth",
288
362
  "columnsFrom": [
@@ -296,7 +370,15 @@
296
370
  }
297
371
  },
298
372
  "compositePrimaryKeys": {},
299
- "uniqueConstraints": {},
373
+ "uniqueConstraints": {
374
+ "user_profiles_user_id_unique": {
375
+ "name": "user_profiles_user_id_unique",
376
+ "nullsNotDistinct": false,
377
+ "columns": [
378
+ "user_id"
379
+ ]
380
+ }
381
+ },
300
382
  "policies": {},
301
383
  "checkConstraints": {},
302
384
  "isRLSEnabled": false
@@ -473,6 +555,148 @@
473
555
  "checkConstraints": {},
474
556
  "isRLSEnabled": false
475
557
  },
558
+ "spfn_auth.user_social_accounts": {
559
+ "name": "user_social_accounts",
560
+ "schema": "spfn_auth",
561
+ "columns": {
562
+ "id": {
563
+ "name": "id",
564
+ "type": "bigserial",
565
+ "primaryKey": true,
566
+ "notNull": true
567
+ },
568
+ "user_id": {
569
+ "name": "user_id",
570
+ "type": "bigserial",
571
+ "primaryKey": false,
572
+ "notNull": true
573
+ },
574
+ "provider": {
575
+ "name": "provider",
576
+ "type": "text",
577
+ "primaryKey": false,
578
+ "notNull": true
579
+ },
580
+ "provider_user_id": {
581
+ "name": "provider_user_id",
582
+ "type": "text",
583
+ "primaryKey": false,
584
+ "notNull": true
585
+ },
586
+ "provider_email": {
587
+ "name": "provider_email",
588
+ "type": "text",
589
+ "primaryKey": false,
590
+ "notNull": false
591
+ },
592
+ "access_token": {
593
+ "name": "access_token",
594
+ "type": "text",
595
+ "primaryKey": false,
596
+ "notNull": false
597
+ },
598
+ "refresh_token": {
599
+ "name": "refresh_token",
600
+ "type": "text",
601
+ "primaryKey": false,
602
+ "notNull": false
603
+ },
604
+ "token_expires_at": {
605
+ "name": "token_expires_at",
606
+ "type": "timestamp with time zone",
607
+ "primaryKey": false,
608
+ "notNull": false
609
+ },
610
+ "created_at": {
611
+ "name": "created_at",
612
+ "type": "timestamp with time zone",
613
+ "primaryKey": false,
614
+ "notNull": true,
615
+ "default": "now()"
616
+ },
617
+ "updated_at": {
618
+ "name": "updated_at",
619
+ "type": "timestamp with time zone",
620
+ "primaryKey": false,
621
+ "notNull": true,
622
+ "default": "now()"
623
+ }
624
+ },
625
+ "indexes": {
626
+ "user_social_accounts_user_id_idx": {
627
+ "name": "user_social_accounts_user_id_idx",
628
+ "columns": [
629
+ {
630
+ "expression": "user_id",
631
+ "isExpression": false,
632
+ "asc": true,
633
+ "nulls": "last"
634
+ }
635
+ ],
636
+ "isUnique": false,
637
+ "concurrently": false,
638
+ "method": "btree",
639
+ "with": {}
640
+ },
641
+ "user_social_accounts_provider_idx": {
642
+ "name": "user_social_accounts_provider_idx",
643
+ "columns": [
644
+ {
645
+ "expression": "provider",
646
+ "isExpression": false,
647
+ "asc": true,
648
+ "nulls": "last"
649
+ }
650
+ ],
651
+ "isUnique": false,
652
+ "concurrently": false,
653
+ "method": "btree",
654
+ "with": {}
655
+ },
656
+ "provider_user_unique_idx": {
657
+ "name": "provider_user_unique_idx",
658
+ "columns": [
659
+ {
660
+ "expression": "provider",
661
+ "isExpression": false,
662
+ "asc": true,
663
+ "nulls": "last"
664
+ },
665
+ {
666
+ "expression": "provider_user_id",
667
+ "isExpression": false,
668
+ "asc": true,
669
+ "nulls": "last"
670
+ }
671
+ ],
672
+ "isUnique": true,
673
+ "concurrently": false,
674
+ "method": "btree",
675
+ "with": {}
676
+ }
677
+ },
678
+ "foreignKeys": {
679
+ "user_social_accounts_user_id_users_id_fk": {
680
+ "name": "user_social_accounts_user_id_users_id_fk",
681
+ "tableFrom": "user_social_accounts",
682
+ "tableTo": "users",
683
+ "schemaTo": "spfn_auth",
684
+ "columnsFrom": [
685
+ "user_id"
686
+ ],
687
+ "columnsTo": [
688
+ "id"
689
+ ],
690
+ "onDelete": "cascade",
691
+ "onUpdate": "no action"
692
+ }
693
+ },
694
+ "compositePrimaryKeys": {},
695
+ "uniqueConstraints": {},
696
+ "policies": {},
697
+ "checkConstraints": {},
698
+ "isRLSEnabled": false
699
+ },
476
700
  "spfn_auth.verification_codes": {
477
701
  "name": "verification_codes",
478
702
  "schema": "spfn_auth",
@@ -521,10 +745,10 @@
521
745
  },
522
746
  "attempts": {
523
747
  "name": "attempts",
524
- "type": "text",
748
+ "type": "integer",
525
749
  "primaryKey": false,
526
750
  "notNull": true,
527
- "default": "'0'"
751
+ "default": 0
528
752
  },
529
753
  "created_at": {
530
754
  "name": "created_at",
@@ -574,7 +798,12 @@
574
798
  "compositePrimaryKeys": {},
575
799
  "uniqueConstraints": {},
576
800
  "policies": {},
577
- "checkConstraints": {},
801
+ "checkConstraints": {
802
+ "attempts_limit_check": {
803
+ "name": "attempts_limit_check",
804
+ "value": "\"spfn_auth\".\"verification_codes\".\"attempts\" >= 0 AND \"spfn_auth\".\"verification_codes\".\"attempts\" <= 10"
805
+ }
806
+ },
578
807
  "isRLSEnabled": false
579
808
  },
580
809
  "spfn_auth.user_invitations": {
@@ -601,13 +830,13 @@
601
830
  },
602
831
  "role_id": {
603
832
  "name": "role_id",
604
- "type": "bigint",
833
+ "type": "bigserial",
605
834
  "primaryKey": false,
606
835
  "notNull": true
607
836
  },
608
- "invited_by": {
609
- "name": "invited_by",
610
- "type": "bigint",
837
+ "invited_by_id": {
838
+ "name": "invited_by_id",
839
+ "type": "bigserial",
611
840
  "primaryKey": false,
612
841
  "notNull": true
613
842
  },
@@ -707,7 +936,7 @@
707
936
  "name": "invitations_invited_by_idx",
708
937
  "columns": [
709
938
  {
710
- "expression": "invited_by",
939
+ "expression": "invited_by_id",
711
940
  "isExpression": false,
712
941
  "asc": true,
713
942
  "nulls": "last"
@@ -761,21 +990,21 @@
761
990
  "columnsTo": [
762
991
  "id"
763
992
  ],
764
- "onDelete": "no action",
993
+ "onDelete": "cascade",
765
994
  "onUpdate": "no action"
766
995
  },
767
- "user_invitations_invited_by_users_id_fk": {
768
- "name": "user_invitations_invited_by_users_id_fk",
996
+ "user_invitations_invited_by_id_users_id_fk": {
997
+ "name": "user_invitations_invited_by_id_users_id_fk",
769
998
  "tableFrom": "user_invitations",
770
999
  "tableTo": "users",
771
1000
  "schemaTo": "spfn_auth",
772
1001
  "columnsFrom": [
773
- "invited_by"
1002
+ "invited_by_id"
774
1003
  ],
775
1004
  "columnsTo": [
776
1005
  "id"
777
1006
  ],
778
- "onDelete": "no action",
1007
+ "onDelete": "cascade",
779
1008
  "onUpdate": "no action"
780
1009
  }
781
1010
  },
@@ -1011,6 +1240,12 @@
1011
1240
  "notNull": true,
1012
1241
  "default": true
1013
1242
  },
1243
+ "metadata": {
1244
+ "name": "metadata",
1245
+ "type": "jsonb",
1246
+ "primaryKey": false,
1247
+ "notNull": false
1248
+ },
1014
1249
  "created_at": {
1015
1250
  "name": "created_at",
1016
1251
  "type": "timestamp with time zone",
@@ -1130,13 +1365,13 @@
1130
1365
  },
1131
1366
  "role_id": {
1132
1367
  "name": "role_id",
1133
- "type": "bigint",
1368
+ "type": "bigserial",
1134
1369
  "primaryKey": false,
1135
1370
  "notNull": true
1136
1371
  },
1137
1372
  "permission_id": {
1138
1373
  "name": "permission_id",
1139
- "type": "bigint",
1374
+ "type": "bigserial",
1140
1375
  "primaryKey": false,
1141
1376
  "notNull": true
1142
1377
  },
@@ -1244,13 +1479,13 @@
1244
1479
  },
1245
1480
  "user_id": {
1246
1481
  "name": "user_id",
1247
- "type": "bigint",
1482
+ "type": "bigserial",
1248
1483
  "primaryKey": false,
1249
1484
  "notNull": true
1250
1485
  },
1251
1486
  "permission_id": {
1252
1487
  "name": "permission_id",
1253
- "type": "bigint",
1488
+ "type": "bigserial",
1254
1489
  "primaryKey": false,
1255
1490
  "notNull": true
1256
1491
  },
@@ -5,8 +5,8 @@
5
5
  {
6
6
  "idx": 0,
7
7
  "version": "7",
8
- "when": 1762700086988,
9
- "tag": "0000_familiar_firebrand",
8
+ "when": 1765167910869,
9
+ "tag": "0000_mysterious_colossus",
10
10
  "breakpoints": true
11
11
  }
12
12
  ]