@nathapp/nestjs-oauth-prisma 1.0.0
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.
- package/README.md +249 -0
- package/dist/abstract-prisma-public-client.repository.d.ts +20 -0
- package/dist/abstract-prisma-public-client.repository.js +54 -0
- package/dist/abstract-prisma-public-client.repository.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/oauth-prisma.module.d.ts +7 -0
- package/dist/oauth-prisma.module.js +75 -0
- package/dist/oauth-prisma.module.js.map +1 -0
- package/dist/oauth-prisma.types.d.ts +189 -0
- package/dist/oauth-prisma.types.js +43 -0
- package/dist/oauth-prisma.types.js.map +1 -0
- package/dist/prisma-consent-logout-target.resolver.d.ts +12 -0
- package/dist/prisma-consent-logout-target.resolver.js +43 -0
- package/dist/prisma-consent-logout-target.resolver.js.map +1 -0
- package/dist/prisma-oauth-access-token.repository.d.ts +41 -0
- package/dist/prisma-oauth-access-token.repository.js +124 -0
- package/dist/prisma-oauth-access-token.repository.js.map +1 -0
- package/dist/prisma-oauth-authorization-code.repository.d.ts +41 -0
- package/dist/prisma-oauth-authorization-code.repository.js +118 -0
- package/dist/prisma-oauth-authorization-code.repository.js.map +1 -0
- package/dist/prisma-oauth-client.repository.d.ts +50 -0
- package/dist/prisma-oauth-client.repository.js +193 -0
- package/dist/prisma-oauth-client.repository.js.map +1 -0
- package/dist/prisma-oauth-consent.repository.d.ts +36 -0
- package/dist/prisma-oauth-consent.repository.js +95 -0
- package/dist/prisma-oauth-consent.repository.js.map +1 -0
- package/dist/prisma-oauth-device-code.repository.d.ts +36 -0
- package/dist/prisma-oauth-device-code.repository.js +124 -0
- package/dist/prisma-oauth-device-code.repository.js.map +1 -0
- package/dist/prisma-oauth-pushed-request.repository.d.ts +16 -0
- package/dist/prisma-oauth-pushed-request.repository.js +104 -0
- package/dist/prisma-oauth-pushed-request.repository.js.map +1 -0
- package/dist/prisma-oauth-refresh-token.repository.d.ts +28 -0
- package/dist/prisma-oauth-refresh-token.repository.js +100 -0
- package/dist/prisma-oauth-refresh-token.repository.js.map +1 -0
- package/dist/prisma-oauth-scope.repository.d.ts +25 -0
- package/dist/prisma-oauth-scope.repository.js +87 -0
- package/dist/prisma-oauth-scope.repository.js.map +1 -0
- package/dist/prisma-oauth-signing-key.repository.d.ts +24 -0
- package/dist/prisma-oauth-signing-key.repository.js +110 -0
- package/dist/prisma-oauth-signing-key.repository.js.map +1 -0
- package/dist/prisma-signing-key.provider.d.ts +22 -0
- package/dist/prisma-signing-key.provider.js +133 -0
- package/dist/prisma-signing-key.provider.js.map +1 -0
- package/package.json +45 -0
- package/prisma/migrations/20260608_oauth_signing_keys_one_active/migration.mysql.sql +8 -0
- package/prisma/migrations/20260608_oauth_signing_keys_one_active/migration.sql +3 -0
- package/prisma/migrations/20260724_oauth_client_advanced_auth_fields/migration.mysql.sql +10 -0
- package/prisma/migrations/20260724_oauth_client_advanced_auth_fields/migration.sql +9 -0
- package/prisma/migrations/20260725_oauth_resource_indicator/migration.mysql.sql +10 -0
- package/prisma/migrations/20260725_oauth_resource_indicator/migration.sql +15 -0
- package/prisma/migrations/20260725_oauth_token_exchange_actor/migration.mysql.sql +2 -0
- package/prisma/migrations/20260725_oauth_token_exchange_actor/migration.sql +2 -0
- package/prisma/migrations/20261003_oauth_access_token_mtls_binding/migration.mysql.sql +2 -0
- package/prisma/migrations/20261003_oauth_access_token_mtls_binding/migration.sql +2 -0
- package/prisma/migrations/20261004_oauth_signing_keys_one_active_per_tenant/migration.mysql.sql +13 -0
- package/prisma/migrations/20261004_oauth_signing_keys_one_active_per_tenant/migration.sql +14 -0
- package/prisma/oauth.prisma +287 -0
- package/prisma/sql/long-text-columns.mysql.sql +29 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PrismaOAuthClientRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const nestjs_prisma_1 = require("@nathapp/nestjs-prisma");
|
|
18
|
+
const nestjs_data_1 = require("@nathapp/nestjs-data");
|
|
19
|
+
const oauth_prisma_types_1 = require("./oauth-prisma.types");
|
|
20
|
+
let PrismaOAuthClientRepository = class PrismaOAuthClientRepository extends nestjs_prisma_1.AbstractPrismaRepository {
|
|
21
|
+
constructor(tx) { super(tx); }
|
|
22
|
+
modelDelegate(client) {
|
|
23
|
+
return (0, oauth_prisma_types_1.getOAuthPrismaDelegate)(client, 'oAuthClient');
|
|
24
|
+
}
|
|
25
|
+
get oauthModel() {
|
|
26
|
+
return this.modelDelegate(this.tx.getClient());
|
|
27
|
+
}
|
|
28
|
+
toDomain(e) {
|
|
29
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
30
|
+
return {
|
|
31
|
+
id: e.id,
|
|
32
|
+
tenantId: (_a = e.tenantId) !== null && _a !== void 0 ? _a : undefined,
|
|
33
|
+
clientId: e.clientId,
|
|
34
|
+
clientSecretHash: (_b = e.clientSecretHash) !== null && _b !== void 0 ? _b : undefined,
|
|
35
|
+
name: e.name,
|
|
36
|
+
description: (_c = e.description) !== null && _c !== void 0 ? _c : undefined,
|
|
37
|
+
clientType: e.clientType,
|
|
38
|
+
redirectUris: ((_d = e.redirectUris) !== null && _d !== void 0 ? _d : []),
|
|
39
|
+
postLogoutRedirectUris: ((_e = e.postLogoutRedirectUris) !== null && _e !== void 0 ? _e : []),
|
|
40
|
+
grantTypes: ((_f = e.grantTypes) !== null && _f !== void 0 ? _f : []),
|
|
41
|
+
responseTypes: ((_g = e.responseTypes) !== null && _g !== void 0 ? _g : []),
|
|
42
|
+
accessTokenTtl: e.accessTokenTtl,
|
|
43
|
+
refreshTokenTtl: e.refreshTokenTtl,
|
|
44
|
+
authCodeTtl: e.authCodeTtl,
|
|
45
|
+
pkceRequired: e.pkceRequired,
|
|
46
|
+
requireConsent: e.requireConsent,
|
|
47
|
+
dpopBoundAccessTokens: e.dpopBoundAccessTokens,
|
|
48
|
+
backchannelLogoutUri: (_h = e.backchannelLogoutUri) !== null && _h !== void 0 ? _h : undefined,
|
|
49
|
+
backchannelLogoutSessionRequired: (_j = e.backchannelLogoutSessionRequired) !== null && _j !== void 0 ? _j : false,
|
|
50
|
+
frontchannelLogoutUri: (_k = e.frontchannelLogoutUri) !== null && _k !== void 0 ? _k : undefined,
|
|
51
|
+
frontchannelLogoutSessionRequired: (_l = e.frontchannelLogoutSessionRequired) !== null && _l !== void 0 ? _l : false,
|
|
52
|
+
tokenEndpointAuthMethod: (_m = e.tokenEndpointAuthMethod) !== null && _m !== void 0 ? _m : undefined,
|
|
53
|
+
jwks: (0, oauth_prisma_types_1.asJsonObject)(e.jwks),
|
|
54
|
+
jwksUri: (_o = e.jwksUri) !== null && _o !== void 0 ? _o : undefined,
|
|
55
|
+
tlsClientAuthSubjectDn: (_p = e.tlsClientAuthSubjectDn) !== null && _p !== void 0 ? _p : undefined,
|
|
56
|
+
tlsClientAuthSanDns: (_q = e.tlsClientAuthSanDns) !== null && _q !== void 0 ? _q : undefined,
|
|
57
|
+
tlsClientAuthSelfSignedThumbprint: (_r = e.tlsClientAuthSelfSignedThumbprint) !== null && _r !== void 0 ? _r : undefined,
|
|
58
|
+
clientSecretHashPrevious: (_s = e.clientSecretHashPrevious) !== null && _s !== void 0 ? _s : undefined,
|
|
59
|
+
previousSecretExpiresAt: (_t = e.previousSecretExpiresAt) !== null && _t !== void 0 ? _t : undefined,
|
|
60
|
+
allowedResources: ((_u = e.allowedResources) !== null && _u !== void 0 ? _u : []),
|
|
61
|
+
requireResource: (_v = e.requireResource) !== null && _v !== void 0 ? _v : false,
|
|
62
|
+
status: e.status,
|
|
63
|
+
createdAt: e.createdAt,
|
|
64
|
+
updatedAt: e.updatedAt,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
toPersistenceCreate(d) {
|
|
68
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
69
|
+
return {
|
|
70
|
+
id: d.id,
|
|
71
|
+
tenantId: (_a = d.tenantId) !== null && _a !== void 0 ? _a : null,
|
|
72
|
+
clientId: d.clientId,
|
|
73
|
+
clientSecretHash: (_b = d.clientSecretHash) !== null && _b !== void 0 ? _b : null,
|
|
74
|
+
name: d.name,
|
|
75
|
+
description: (_c = d.description) !== null && _c !== void 0 ? _c : null,
|
|
76
|
+
clientType: d.clientType,
|
|
77
|
+
redirectUris: d.redirectUris,
|
|
78
|
+
postLogoutRedirectUris: (_d = d.postLogoutRedirectUris) !== null && _d !== void 0 ? _d : [],
|
|
79
|
+
grantTypes: d.grantTypes,
|
|
80
|
+
responseTypes: d.responseTypes,
|
|
81
|
+
accessTokenTtl: d.accessTokenTtl,
|
|
82
|
+
refreshTokenTtl: d.refreshTokenTtl,
|
|
83
|
+
authCodeTtl: d.authCodeTtl,
|
|
84
|
+
pkceRequired: d.pkceRequired,
|
|
85
|
+
requireConsent: d.requireConsent,
|
|
86
|
+
dpopBoundAccessTokens: (_e = d.dpopBoundAccessTokens) !== null && _e !== void 0 ? _e : false,
|
|
87
|
+
backchannelLogoutUri: (_f = d.backchannelLogoutUri) !== null && _f !== void 0 ? _f : null,
|
|
88
|
+
backchannelLogoutSessionRequired: (_g = d.backchannelLogoutSessionRequired) !== null && _g !== void 0 ? _g : null,
|
|
89
|
+
frontchannelLogoutUri: (_h = d.frontchannelLogoutUri) !== null && _h !== void 0 ? _h : null,
|
|
90
|
+
frontchannelLogoutSessionRequired: (_j = d.frontchannelLogoutSessionRequired) !== null && _j !== void 0 ? _j : null,
|
|
91
|
+
tokenEndpointAuthMethod: (_k = d.tokenEndpointAuthMethod) !== null && _k !== void 0 ? _k : null,
|
|
92
|
+
jwks: (_l = d.jwks) !== null && _l !== void 0 ? _l : null,
|
|
93
|
+
jwksUri: (_m = d.jwksUri) !== null && _m !== void 0 ? _m : null,
|
|
94
|
+
tlsClientAuthSubjectDn: (_o = d.tlsClientAuthSubjectDn) !== null && _o !== void 0 ? _o : null,
|
|
95
|
+
tlsClientAuthSanDns: (_p = d.tlsClientAuthSanDns) !== null && _p !== void 0 ? _p : null,
|
|
96
|
+
tlsClientAuthSelfSignedThumbprint: (_q = d.tlsClientAuthSelfSignedThumbprint) !== null && _q !== void 0 ? _q : null,
|
|
97
|
+
clientSecretHashPrevious: (_r = d.clientSecretHashPrevious) !== null && _r !== void 0 ? _r : null,
|
|
98
|
+
previousSecretExpiresAt: (_s = d.previousSecretExpiresAt) !== null && _s !== void 0 ? _s : null,
|
|
99
|
+
allowedResources: (_t = d.allowedResources) !== null && _t !== void 0 ? _t : [],
|
|
100
|
+
requireResource: (_u = d.requireResource) !== null && _u !== void 0 ? _u : false,
|
|
101
|
+
status: d.status,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
toPersistenceUpdate(p) {
|
|
105
|
+
const out = {};
|
|
106
|
+
if (p.name !== undefined)
|
|
107
|
+
out.name = p.name;
|
|
108
|
+
if (p.description !== undefined)
|
|
109
|
+
out.description = p.description;
|
|
110
|
+
if (p.redirectUris !== undefined)
|
|
111
|
+
out.redirectUris = p.redirectUris;
|
|
112
|
+
if (p.postLogoutRedirectUris !== undefined)
|
|
113
|
+
out.postLogoutRedirectUris = p.postLogoutRedirectUris;
|
|
114
|
+
if (p.grantTypes !== undefined)
|
|
115
|
+
out.grantTypes = p.grantTypes;
|
|
116
|
+
if (p.responseTypes !== undefined)
|
|
117
|
+
out.responseTypes = p.responseTypes;
|
|
118
|
+
if (p.accessTokenTtl !== undefined)
|
|
119
|
+
out.accessTokenTtl = p.accessTokenTtl;
|
|
120
|
+
if (p.refreshTokenTtl !== undefined)
|
|
121
|
+
out.refreshTokenTtl = p.refreshTokenTtl;
|
|
122
|
+
if (p.authCodeTtl !== undefined)
|
|
123
|
+
out.authCodeTtl = p.authCodeTtl;
|
|
124
|
+
if (p.pkceRequired !== undefined)
|
|
125
|
+
out.pkceRequired = p.pkceRequired;
|
|
126
|
+
if (p.requireConsent !== undefined)
|
|
127
|
+
out.requireConsent = p.requireConsent;
|
|
128
|
+
if (p.dpopBoundAccessTokens !== undefined)
|
|
129
|
+
out.dpopBoundAccessTokens = p.dpopBoundAccessTokens;
|
|
130
|
+
if (p.backchannelLogoutUri !== undefined)
|
|
131
|
+
out.backchannelLogoutUri = p.backchannelLogoutUri;
|
|
132
|
+
if (p.backchannelLogoutSessionRequired !== undefined)
|
|
133
|
+
out.backchannelLogoutSessionRequired = p.backchannelLogoutSessionRequired;
|
|
134
|
+
if (p.frontchannelLogoutUri !== undefined)
|
|
135
|
+
out.frontchannelLogoutUri = p.frontchannelLogoutUri;
|
|
136
|
+
if (p.frontchannelLogoutSessionRequired !== undefined)
|
|
137
|
+
out.frontchannelLogoutSessionRequired = p.frontchannelLogoutSessionRequired;
|
|
138
|
+
if (p.status !== undefined)
|
|
139
|
+
out.status = p.status;
|
|
140
|
+
if (p.clientSecretHash !== undefined)
|
|
141
|
+
out.clientSecretHash = p.clientSecretHash;
|
|
142
|
+
if (p.tokenEndpointAuthMethod !== undefined)
|
|
143
|
+
out.tokenEndpointAuthMethod = p.tokenEndpointAuthMethod;
|
|
144
|
+
if (p.jwks !== undefined)
|
|
145
|
+
out.jwks = p.jwks;
|
|
146
|
+
if (p.jwksUri !== undefined)
|
|
147
|
+
out.jwksUri = p.jwksUri;
|
|
148
|
+
if (p.tlsClientAuthSubjectDn !== undefined)
|
|
149
|
+
out.tlsClientAuthSubjectDn = p.tlsClientAuthSubjectDn;
|
|
150
|
+
if (p.tlsClientAuthSanDns !== undefined)
|
|
151
|
+
out.tlsClientAuthSanDns = p.tlsClientAuthSanDns;
|
|
152
|
+
if (p.tlsClientAuthSelfSignedThumbprint !== undefined)
|
|
153
|
+
out.tlsClientAuthSelfSignedThumbprint = p.tlsClientAuthSelfSignedThumbprint;
|
|
154
|
+
if (p.clientSecretHashPrevious !== undefined)
|
|
155
|
+
out.clientSecretHashPrevious = p.clientSecretHashPrevious;
|
|
156
|
+
if (p.previousSecretExpiresAt !== undefined)
|
|
157
|
+
out.previousSecretExpiresAt = p.previousSecretExpiresAt;
|
|
158
|
+
if (p.allowedResources !== undefined)
|
|
159
|
+
out.allowedResources = p.allowedResources;
|
|
160
|
+
if (p.requireResource !== undefined)
|
|
161
|
+
out.requireResource = p.requireResource;
|
|
162
|
+
return out;
|
|
163
|
+
}
|
|
164
|
+
async update(idOrClientId, patch) {
|
|
165
|
+
let existing = await this.oauthModel.findUnique({ where: { id: idOrClientId } });
|
|
166
|
+
if (!existing) {
|
|
167
|
+
existing = await this.oauthModel.findUnique({ where: { clientId: idOrClientId } });
|
|
168
|
+
}
|
|
169
|
+
const id = existing ? existing.id : idOrClientId;
|
|
170
|
+
const data = this.toPersistenceUpdate(patch);
|
|
171
|
+
const updated = await this.oauthModel.update({ where: { id }, data });
|
|
172
|
+
return this.toDomain(updated);
|
|
173
|
+
}
|
|
174
|
+
async findByClientId(clientId) {
|
|
175
|
+
const e = await this.oauthModel.findUnique({ where: { clientId } });
|
|
176
|
+
return e ? this.toDomain(e) : null;
|
|
177
|
+
}
|
|
178
|
+
async findByClientIds(clientIds) {
|
|
179
|
+
return (await this.oauthModel.findMany({ where: { clientId: { in: clientIds } } })).map((r) => this.toDomain(r));
|
|
180
|
+
}
|
|
181
|
+
async findPage(query) {
|
|
182
|
+
const where = query.tenantId ? { tenantId: query.tenantId } : {};
|
|
183
|
+
const result = await (0, nestjs_prisma_1.Paginate)(this.oauthModel, query, { where, orderBy: { createdAt: 'desc' } });
|
|
184
|
+
return result.remap((row) => this.toDomain(row));
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
exports.PrismaOAuthClientRepository = PrismaOAuthClientRepository;
|
|
188
|
+
exports.PrismaOAuthClientRepository = PrismaOAuthClientRepository = __decorate([
|
|
189
|
+
(0, common_1.Injectable)(),
|
|
190
|
+
__param(0, (0, common_1.Inject)(nestjs_data_1.TRANSACTION_MANAGER)),
|
|
191
|
+
__metadata("design:paramtypes", [Object])
|
|
192
|
+
], PrismaOAuthClientRepository);
|
|
193
|
+
//# sourceMappingURL=prisma-oauth-client.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma-oauth-client.repository.js","sourceRoot":"","sources":["../lib/prisma-oauth-client.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AbstractPrismaPublicClientRepository } from './abstract-prisma-public-client.repository';
|
|
2
|
+
import { ITransactionManager } from '@nathapp/nestjs-data';
|
|
3
|
+
import type { PrismaClientLike } from '@nathapp/nestjs-prisma';
|
|
4
|
+
import { type IOAuthConsentRepository, type IOAuthConsent } from '@nathapp/nestjs-oauth';
|
|
5
|
+
import { type OAuthConsentRow, type OAuthPrismaDelegate } from './oauth-prisma.types';
|
|
6
|
+
export declare class PrismaOAuthConsentRepository extends AbstractPrismaPublicClientRepository<IOAuthConsent, OAuthConsentRow> implements IOAuthConsentRepository {
|
|
7
|
+
constructor(tx: ITransactionManager);
|
|
8
|
+
protected readonly prismaModelName = "oAuthConsent";
|
|
9
|
+
protected modelDelegate(client: PrismaClientLike): OAuthPrismaDelegate<OAuthConsentRow>;
|
|
10
|
+
protected get relationIncludes(): Record<string, unknown>;
|
|
11
|
+
protected toDomain(e: OAuthConsentRow): IOAuthConsent;
|
|
12
|
+
protected toPersistenceCreate(d: IOAuthConsent): {
|
|
13
|
+
id: string;
|
|
14
|
+
tenantId: string | null;
|
|
15
|
+
client: {
|
|
16
|
+
connect: {
|
|
17
|
+
clientId: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
userId: string;
|
|
21
|
+
grantedAt: Date;
|
|
22
|
+
scopes: {
|
|
23
|
+
create: {
|
|
24
|
+
scope: {
|
|
25
|
+
connect: {
|
|
26
|
+
code: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
}[];
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
protected toPersistenceUpdate(p: Partial<IOAuthConsent>): Record<string, unknown>;
|
|
33
|
+
findActive(userId: string, clientId: string): Promise<IOAuthConsent | null>;
|
|
34
|
+
findActiveClientPublicIds(userId: string, tenantId?: string | null): Promise<string[]>;
|
|
35
|
+
revoke(userId: string, clientId: string, revokedAt: Date): Promise<void>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PrismaOAuthConsentRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const abstract_prisma_public_client_repository_1 = require("./abstract-prisma-public-client.repository");
|
|
18
|
+
const nestjs_data_1 = require("@nathapp/nestjs-data");
|
|
19
|
+
const oauth_prisma_types_1 = require("./oauth-prisma.types");
|
|
20
|
+
let PrismaOAuthConsentRepository = class PrismaOAuthConsentRepository extends abstract_prisma_public_client_repository_1.AbstractPrismaPublicClientRepository {
|
|
21
|
+
constructor(tx) {
|
|
22
|
+
super(tx);
|
|
23
|
+
this.prismaModelName = 'oAuthConsent';
|
|
24
|
+
}
|
|
25
|
+
modelDelegate(client) {
|
|
26
|
+
return (0, oauth_prisma_types_1.getOAuthPrismaDelegate)(client, this.prismaModelName);
|
|
27
|
+
}
|
|
28
|
+
get relationIncludes() {
|
|
29
|
+
return { client: { select: { clientId: true } }, scopes: { include: { scope: true } } };
|
|
30
|
+
}
|
|
31
|
+
toDomain(e) {
|
|
32
|
+
var _a, _b, _c;
|
|
33
|
+
return {
|
|
34
|
+
id: e.id,
|
|
35
|
+
tenantId: (_a = e.tenantId) !== null && _a !== void 0 ? _a : undefined,
|
|
36
|
+
clientId: e.client.clientId,
|
|
37
|
+
userId: e.userId,
|
|
38
|
+
scopes: ((_b = e.scopes) !== null && _b !== void 0 ? _b : []).map((scope) => scope.scope.code),
|
|
39
|
+
grantedAt: e.grantedAt,
|
|
40
|
+
revokedAt: (_c = e.revokedAt) !== null && _c !== void 0 ? _c : undefined,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
toPersistenceCreate(d) {
|
|
44
|
+
var _a;
|
|
45
|
+
return {
|
|
46
|
+
id: d.id,
|
|
47
|
+
tenantId: (_a = d.tenantId) !== null && _a !== void 0 ? _a : null,
|
|
48
|
+
client: { connect: { clientId: d.clientId } },
|
|
49
|
+
userId: d.userId,
|
|
50
|
+
grantedAt: d.grantedAt,
|
|
51
|
+
scopes: {
|
|
52
|
+
create: d.scopes.map((code) => ({ scope: { connect: { code } } })),
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
toPersistenceUpdate(p) {
|
|
57
|
+
const out = {};
|
|
58
|
+
if (p.revokedAt !== undefined)
|
|
59
|
+
out.revokedAt = p.revokedAt;
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
async findActive(userId, clientId) {
|
|
63
|
+
const e = await this.oauthModel.findFirst({
|
|
64
|
+
where: { userId, client: { clientId }, revokedAt: null },
|
|
65
|
+
include: { client: { select: { clientId: true } }, scopes: { include: { scope: true } } },
|
|
66
|
+
});
|
|
67
|
+
return e ? this.toDomain(e) : null;
|
|
68
|
+
}
|
|
69
|
+
async findActiveClientPublicIds(userId, tenantId) {
|
|
70
|
+
const where = { userId, revokedAt: null };
|
|
71
|
+
if (tenantId != null)
|
|
72
|
+
where.tenantId = tenantId;
|
|
73
|
+
const rows = await this.oauthModel.findMany({
|
|
74
|
+
where,
|
|
75
|
+
select: { client: { select: { clientId: true } } },
|
|
76
|
+
});
|
|
77
|
+
const seen = new Set();
|
|
78
|
+
for (const row of rows)
|
|
79
|
+
seen.add(row.client.clientId);
|
|
80
|
+
return Array.from(seen);
|
|
81
|
+
}
|
|
82
|
+
async revoke(userId, clientId, revokedAt) {
|
|
83
|
+
await this.oauthModel.updateMany({
|
|
84
|
+
where: { userId, client: { clientId }, revokedAt: null },
|
|
85
|
+
data: { revokedAt },
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
exports.PrismaOAuthConsentRepository = PrismaOAuthConsentRepository;
|
|
90
|
+
exports.PrismaOAuthConsentRepository = PrismaOAuthConsentRepository = __decorate([
|
|
91
|
+
(0, common_1.Injectable)(),
|
|
92
|
+
__param(0, (0, common_1.Inject)(nestjs_data_1.TRANSACTION_MANAGER)),
|
|
93
|
+
__metadata("design:paramtypes", [Object])
|
|
94
|
+
], PrismaOAuthConsentRepository);
|
|
95
|
+
//# sourceMappingURL=prisma-oauth-consent.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma-oauth-consent.repository.js","sourceRoot":"","sources":["../lib/prisma-oauth-consent.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AbstractPrismaPublicClientRepository } from './abstract-prisma-public-client.repository';
|
|
2
|
+
import type { PrismaClientLike } from '@nathapp/nestjs-prisma';
|
|
3
|
+
import { ITransactionManager } from '@nathapp/nestjs-data';
|
|
4
|
+
import { type IOAuthDeviceCodeRepository, type IOAuthDeviceCode } from '@nathapp/nestjs-oauth';
|
|
5
|
+
import { type OAuthDeviceCodeRow, type OAuthPrismaDelegate } from './oauth-prisma.types';
|
|
6
|
+
export declare class PrismaOAuthDeviceCodeRepository extends AbstractPrismaPublicClientRepository<IOAuthDeviceCode, OAuthDeviceCodeRow> implements IOAuthDeviceCodeRepository {
|
|
7
|
+
constructor(tx: ITransactionManager);
|
|
8
|
+
protected readonly prismaModelName = "oAuthDeviceCode";
|
|
9
|
+
protected modelDelegate(client: PrismaClientLike): OAuthPrismaDelegate<OAuthDeviceCodeRow>;
|
|
10
|
+
protected toDomain(e: OAuthDeviceCodeRow): IOAuthDeviceCode;
|
|
11
|
+
protected toPersistenceCreate(d: IOAuthDeviceCode): {
|
|
12
|
+
id: string;
|
|
13
|
+
tenantId: string | null;
|
|
14
|
+
deviceCodeHash: string;
|
|
15
|
+
userCodeHash: string;
|
|
16
|
+
client: {
|
|
17
|
+
connect: {
|
|
18
|
+
clientId: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
scope: string | null;
|
|
22
|
+
status: import("@nathapp/nestjs-oauth").DeviceCodeStatus;
|
|
23
|
+
userId: string | null;
|
|
24
|
+
authTime: Date | null;
|
|
25
|
+
interval: number;
|
|
26
|
+
expiresAt: Date;
|
|
27
|
+
};
|
|
28
|
+
protected toPersistenceUpdate(p: Partial<IOAuthDeviceCode>): Record<string, unknown>;
|
|
29
|
+
findByDeviceCode(deviceCodeHash: string): Promise<IOAuthDeviceCode | null>;
|
|
30
|
+
findByUserCode(userCodeHash: string): Promise<IOAuthDeviceCode | null>;
|
|
31
|
+
markApproved(id: string, userId: string, authTime: Date, approvedAt: Date): Promise<void>;
|
|
32
|
+
markDenied(id: string): Promise<void>;
|
|
33
|
+
touchPolledAt(id: string, at: Date): Promise<void>;
|
|
34
|
+
consume(id: string, at: Date): Promise<boolean>;
|
|
35
|
+
deleteExpired(now: Date): Promise<number>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PrismaOAuthDeviceCodeRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const abstract_prisma_public_client_repository_1 = require("./abstract-prisma-public-client.repository");
|
|
18
|
+
const nestjs_data_1 = require("@nathapp/nestjs-data");
|
|
19
|
+
const oauth_prisma_types_1 = require("./oauth-prisma.types");
|
|
20
|
+
let PrismaOAuthDeviceCodeRepository = class PrismaOAuthDeviceCodeRepository extends abstract_prisma_public_client_repository_1.AbstractPrismaPublicClientRepository {
|
|
21
|
+
constructor(tx) {
|
|
22
|
+
super(tx);
|
|
23
|
+
this.prismaModelName = 'oAuthDeviceCode';
|
|
24
|
+
}
|
|
25
|
+
modelDelegate(client) {
|
|
26
|
+
return (0, oauth_prisma_types_1.getOAuthPrismaDelegate)(client, this.prismaModelName);
|
|
27
|
+
}
|
|
28
|
+
toDomain(e) {
|
|
29
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
30
|
+
return {
|
|
31
|
+
id: e.id,
|
|
32
|
+
tenantId: (_a = e.tenantId) !== null && _a !== void 0 ? _a : undefined,
|
|
33
|
+
deviceCodeHash: e.deviceCodeHash,
|
|
34
|
+
userCodeHash: e.userCodeHash,
|
|
35
|
+
clientId: e.client.clientId,
|
|
36
|
+
scopes: e.scope ? e.scope.split(' ').filter(Boolean) : [],
|
|
37
|
+
status: e.status,
|
|
38
|
+
userId: (_b = e.userId) !== null && _b !== void 0 ? _b : undefined,
|
|
39
|
+
authTime: (_c = e.authTime) !== null && _c !== void 0 ? _c : undefined,
|
|
40
|
+
interval: (_d = e.interval) !== null && _d !== void 0 ? _d : 5,
|
|
41
|
+
lastPolledAt: (_e = e.lastPolledAt) !== null && _e !== void 0 ? _e : undefined,
|
|
42
|
+
approvedAt: (_f = e.approvedAt) !== null && _f !== void 0 ? _f : undefined,
|
|
43
|
+
consumedAt: (_g = e.consumedAt) !== null && _g !== void 0 ? _g : undefined,
|
|
44
|
+
expiresAt: e.expiresAt,
|
|
45
|
+
createdAt: e.createdAt,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
toPersistenceCreate(d) {
|
|
49
|
+
var _a, _b, _c;
|
|
50
|
+
return {
|
|
51
|
+
id: d.id,
|
|
52
|
+
tenantId: (_a = d.tenantId) !== null && _a !== void 0 ? _a : null,
|
|
53
|
+
deviceCodeHash: d.deviceCodeHash,
|
|
54
|
+
userCodeHash: d.userCodeHash,
|
|
55
|
+
client: { connect: { clientId: d.clientId } },
|
|
56
|
+
scope: d.scopes.length > 0 ? d.scopes.join(' ') : null,
|
|
57
|
+
status: d.status,
|
|
58
|
+
userId: (_b = d.userId) !== null && _b !== void 0 ? _b : null,
|
|
59
|
+
authTime: (_c = d.authTime) !== null && _c !== void 0 ? _c : null,
|
|
60
|
+
interval: d.interval,
|
|
61
|
+
expiresAt: d.expiresAt,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
toPersistenceUpdate(p) {
|
|
65
|
+
const out = {};
|
|
66
|
+
if (p.status !== undefined)
|
|
67
|
+
out.status = p.status;
|
|
68
|
+
if (p.userId !== undefined)
|
|
69
|
+
out.userId = p.userId;
|
|
70
|
+
if (p.authTime !== undefined)
|
|
71
|
+
out.authTime = p.authTime;
|
|
72
|
+
if (p.approvedAt !== undefined)
|
|
73
|
+
out.approvedAt = p.approvedAt;
|
|
74
|
+
if (p.lastPolledAt !== undefined)
|
|
75
|
+
out.lastPolledAt = p.lastPolledAt;
|
|
76
|
+
if (p.consumedAt !== undefined)
|
|
77
|
+
out.consumedAt = p.consumedAt;
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
80
|
+
async findByDeviceCode(deviceCodeHash) {
|
|
81
|
+
const e = await this.oauthModel.findUnique({ where: { deviceCodeHash }, include: { client: { select: { clientId: true } } } });
|
|
82
|
+
return e ? this.toDomain(e) : null;
|
|
83
|
+
}
|
|
84
|
+
async findByUserCode(userCodeHash) {
|
|
85
|
+
const e = await this.oauthModel.findUnique({ where: { userCodeHash }, include: { client: { select: { clientId: true } } } });
|
|
86
|
+
return e ? this.toDomain(e) : null;
|
|
87
|
+
}
|
|
88
|
+
async markApproved(id, userId, authTime, approvedAt) {
|
|
89
|
+
await this.oauthModel.update({
|
|
90
|
+
where: { id },
|
|
91
|
+
data: { status: 'approved', userId, authTime, approvedAt },
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
async markDenied(id) {
|
|
95
|
+
await this.oauthModel.update({
|
|
96
|
+
where: { id },
|
|
97
|
+
data: { status: 'denied' },
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
async touchPolledAt(id, at) {
|
|
101
|
+
await this.oauthModel.update({
|
|
102
|
+
where: { id },
|
|
103
|
+
data: { lastPolledAt: at },
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
async consume(id, at) {
|
|
107
|
+
const res = await this.oauthModel.updateMany({
|
|
108
|
+
where: { id, status: 'approved', consumedAt: null },
|
|
109
|
+
data: { consumedAt: at },
|
|
110
|
+
});
|
|
111
|
+
return res.count === 1;
|
|
112
|
+
}
|
|
113
|
+
async deleteExpired(now) {
|
|
114
|
+
const res = await this.oauthModel.deleteMany({ where: { expiresAt: { lt: now } } });
|
|
115
|
+
return res.count;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
exports.PrismaOAuthDeviceCodeRepository = PrismaOAuthDeviceCodeRepository;
|
|
119
|
+
exports.PrismaOAuthDeviceCodeRepository = PrismaOAuthDeviceCodeRepository = __decorate([
|
|
120
|
+
(0, common_1.Injectable)(),
|
|
121
|
+
__param(0, (0, common_1.Inject)(nestjs_data_1.TRANSACTION_MANAGER)),
|
|
122
|
+
__metadata("design:paramtypes", [Object])
|
|
123
|
+
], PrismaOAuthDeviceCodeRepository);
|
|
124
|
+
//# sourceMappingURL=prisma-oauth-device-code.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma-oauth-device-code.repository.js","sourceRoot":"","sources":["../lib/prisma-oauth-device-code.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AbstractPrismaPublicClientRepository } from './abstract-prisma-public-client.repository';
|
|
2
|
+
import type { PrismaClientLike } from '@nathapp/nestjs-prisma';
|
|
3
|
+
import { ITransactionManager } from '@nathapp/nestjs-data';
|
|
4
|
+
import { type IOAuthPushedRequestRepository, type IOAuthPushedRequest } from '@nathapp/nestjs-oauth';
|
|
5
|
+
import { type OAuthPrismaDelegate, type OAuthPushedRequestRow } from './oauth-prisma.types';
|
|
6
|
+
export declare class PrismaOAuthPushedRequestRepository extends AbstractPrismaPublicClientRepository<IOAuthPushedRequest, OAuthPushedRequestRow> implements IOAuthPushedRequestRepository {
|
|
7
|
+
constructor(tx: ITransactionManager);
|
|
8
|
+
protected readonly prismaModelName = "oAuthPushedRequest";
|
|
9
|
+
protected modelDelegate(client: PrismaClientLike): OAuthPrismaDelegate<OAuthPushedRequestRow>;
|
|
10
|
+
protected toDomain(e: OAuthPushedRequestRow): IOAuthPushedRequest;
|
|
11
|
+
findByRequestUri(requestUriHash: string): Promise<IOAuthPushedRequest | null>;
|
|
12
|
+
consume(id: string, at: Date): Promise<boolean>;
|
|
13
|
+
deleteExpired(now: Date): Promise<number>;
|
|
14
|
+
protected toPersistenceCreate(d: IOAuthPushedRequest): Record<string, unknown>;
|
|
15
|
+
protected toPersistenceUpdate(p: Partial<IOAuthPushedRequest>): Record<string, unknown>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PrismaOAuthPushedRequestRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const abstract_prisma_public_client_repository_1 = require("./abstract-prisma-public-client.repository");
|
|
18
|
+
const nestjs_data_1 = require("@nathapp/nestjs-data");
|
|
19
|
+
const oauth_prisma_types_1 = require("./oauth-prisma.types");
|
|
20
|
+
let PrismaOAuthPushedRequestRepository = class PrismaOAuthPushedRequestRepository extends abstract_prisma_public_client_repository_1.AbstractPrismaPublicClientRepository {
|
|
21
|
+
constructor(tx) {
|
|
22
|
+
super(tx);
|
|
23
|
+
this.prismaModelName = 'oAuthPushedRequest';
|
|
24
|
+
}
|
|
25
|
+
modelDelegate(client) {
|
|
26
|
+
return (0, oauth_prisma_types_1.getOAuthPrismaDelegate)(client, this.prismaModelName);
|
|
27
|
+
}
|
|
28
|
+
toDomain(e) {
|
|
29
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
30
|
+
const domain = {
|
|
31
|
+
id: e.id,
|
|
32
|
+
tenantId: (_a = e.tenantId) !== null && _a !== void 0 ? _a : undefined,
|
|
33
|
+
requestUriHash: e.requestUriHash,
|
|
34
|
+
clientId: e.client.clientId,
|
|
35
|
+
responseType: e.responseType,
|
|
36
|
+
redirectUri: e.redirectUri,
|
|
37
|
+
scope: (_b = e.scope) !== null && _b !== void 0 ? _b : undefined,
|
|
38
|
+
state: (_c = e.state) !== null && _c !== void 0 ? _c : undefined,
|
|
39
|
+
codeChallenge: (_d = e.codeChallenge) !== null && _d !== void 0 ? _d : undefined,
|
|
40
|
+
codeChallengeMethod: (_e = e.codeChallengeMethod) !== null && _e !== void 0 ? _e : undefined,
|
|
41
|
+
nonce: (_f = e.nonce) !== null && _f !== void 0 ? _f : undefined,
|
|
42
|
+
prompt: (_g = e.prompt) !== null && _g !== void 0 ? _g : undefined,
|
|
43
|
+
maxAge: (_h = e.maxAge) !== null && _h !== void 0 ? _h : undefined,
|
|
44
|
+
consumedAt: (_j = e.consumedAt) !== null && _j !== void 0 ? _j : undefined,
|
|
45
|
+
expiresAt: e.expiresAt,
|
|
46
|
+
resource: (_k = e.resource) !== null && _k !== void 0 ? _k : undefined,
|
|
47
|
+
createdAt: e.createdAt,
|
|
48
|
+
};
|
|
49
|
+
return domain;
|
|
50
|
+
}
|
|
51
|
+
async findByRequestUri(requestUriHash) {
|
|
52
|
+
const e = await this.oauthModel.findUnique({ where: { requestUriHash }, include: { client: { select: { clientId: true } } } });
|
|
53
|
+
return e ? this.toDomain(e) : null;
|
|
54
|
+
}
|
|
55
|
+
async consume(id, at) {
|
|
56
|
+
const res = await this.oauthModel.updateMany({
|
|
57
|
+
where: { id, consumedAt: null },
|
|
58
|
+
data: { consumedAt: at },
|
|
59
|
+
});
|
|
60
|
+
return res.count === 1;
|
|
61
|
+
}
|
|
62
|
+
async deleteExpired(now) {
|
|
63
|
+
const res = await this.oauthModel.deleteMany({ where: { expiresAt: { lt: now } } });
|
|
64
|
+
return res.count;
|
|
65
|
+
}
|
|
66
|
+
toPersistenceCreate(d) {
|
|
67
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
68
|
+
return {
|
|
69
|
+
id: d.id,
|
|
70
|
+
tenantId: (_a = d.tenantId) !== null && _a !== void 0 ? _a : null,
|
|
71
|
+
requestUriHash: d.requestUriHash,
|
|
72
|
+
client: { connect: { clientId: d.clientId } },
|
|
73
|
+
responseType: d.responseType,
|
|
74
|
+
redirectUri: d.redirectUri,
|
|
75
|
+
scope: (_b = d.scope) !== null && _b !== void 0 ? _b : null,
|
|
76
|
+
state: (_c = d.state) !== null && _c !== void 0 ? _c : null,
|
|
77
|
+
codeChallenge: (_d = d.codeChallenge) !== null && _d !== void 0 ? _d : null,
|
|
78
|
+
codeChallengeMethod: (_e = d.codeChallengeMethod) !== null && _e !== void 0 ? _e : null,
|
|
79
|
+
nonce: (_f = d.nonce) !== null && _f !== void 0 ? _f : null,
|
|
80
|
+
prompt: (_g = d.prompt) !== null && _g !== void 0 ? _g : null,
|
|
81
|
+
maxAge: (_h = d.maxAge) !== null && _h !== void 0 ? _h : null,
|
|
82
|
+
consumedAt: (_j = d.consumedAt) !== null && _j !== void 0 ? _j : null,
|
|
83
|
+
resource: (_k = d.resource) !== null && _k !== void 0 ? _k : null,
|
|
84
|
+
expiresAt: d.expiresAt,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
toPersistenceUpdate(p) {
|
|
88
|
+
const out = {};
|
|
89
|
+
if (p.scope !== undefined)
|
|
90
|
+
out.scope = p.scope;
|
|
91
|
+
if (p.state !== undefined)
|
|
92
|
+
out.state = p.state;
|
|
93
|
+
if (p.consumedAt !== undefined)
|
|
94
|
+
out.consumedAt = p.consumedAt;
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
exports.PrismaOAuthPushedRequestRepository = PrismaOAuthPushedRequestRepository;
|
|
99
|
+
exports.PrismaOAuthPushedRequestRepository = PrismaOAuthPushedRequestRepository = __decorate([
|
|
100
|
+
(0, common_1.Injectable)(),
|
|
101
|
+
__param(0, (0, common_1.Inject)(nestjs_data_1.TRANSACTION_MANAGER)),
|
|
102
|
+
__metadata("design:paramtypes", [Object])
|
|
103
|
+
], PrismaOAuthPushedRequestRepository);
|
|
104
|
+
//# sourceMappingURL=prisma-oauth-pushed-request.repository.js.map
|