oauth2-server-model-prisma
TypeScript icon, indicating that this package has built-in type declarations

0.9.0 • Public • Published

Prisma model for node OAuth2 Server

Installation

Using Yarn

yarn add oauth2-server-model-prisma

Using NPM

npm install oauth2-server-model-prisma

Usage

  import model from 'oauth2-server-model-prisma';

  const server = new OAuth2Server({
    model: {
      ...model({ prisma }),
    },
    requireClientAuthentication: {
      password: false,
      refresh_token: false,
    },
  });

Prisma Schema

model OauthAccessToken {
  id                    String           @default(dbgenerated()) @id
  userId                String
  applicationId         String
  token                 String           @unique
  refreshToken          String?          @unique
  tokenExpiresAt        DateTime?        @db.Timestamptz(6)
  refreshTokenExpiresAt DateTime?        @db.Timestamptz(6)
  scopes                Json             @default("[]")
  createdAt             DateTime         @default(now()) @db.Timestamptz(6)
  updatedAt             DateTime         @default(now()) @updatedAt @db.Timestamptz(6)
  application           OauthApplication @relation(fields: [applicationId], references: [id])
  user                  User             @relation(fields: [userId], references: [id])

  @@index([applicationId])
  @@index([userId])
}

model OauthAccessGrant {
  id            String           @default(dbgenerated()) @id
  userId        String
  applicationId String
  token         String           @unique
  expiresAt     DateTime         @db.Timestamptz(6)
  redirectUri   String
  codeChallengeMethod String?
  codeChallenge String?
  scopes        Json             @default("[]")
  createdAt     DateTime         @default(now()) @db.Timestamptz(6)
  updatedAt     DateTime         @default(now()) @updatedAt @db.Timestamptz(6)
  application   OauthApplication @relation(fields: [applicationId], references: [id])
  user          User             @relation(fields: [userId], references: [id])

  @@index([applicationId])
  @@index([userId])
}

model OauthApplication {
  id           String             @default(dbgenerated()) @id
  name         String
  clientId     String             @unique
  clientSecret String
  redirectUris Json               @default("[]")
  scopes       Json               @default("[]")
  createdAt    DateTime           @default(now()) @db.Timestamptz(6)
  updatedAt    DateTime           @default(now()) @updatedAt @db.Timestamptz(6)
  grants       Json               @default("[]")
  accessTokens OauthAccessToken[]
  accessGrants OauthAccessGrant[]
}

model User {
  id                String             @default(dbgenerated()) @id
  name              String
  email             String             @unique
  encryptedPassword String
  createdAt         DateTime           @default(now()) @db.Timestamptz(6)
  updatedAt         DateTime           @default(now()) @updatedAt @db.Timestamptz(6)
  accessTokens      OauthAccessToken[]
  accessGrants      OauthAccessGrant[]
  identities        UserIdentity[]
}

model UserIdentity {
  id        String   @default(dbgenerated()) @id
  userId    String
  provider  String
  uid       String
  name      String?
  email     String?
  createdAt DateTime @default(now()) @db.Timestamptz(6)
  updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)
  user      User     @relation(fields: [userId], references: [id])

  @@index([userId])
  @@unique([provider, uid])
}

License

The package is available as open source under the terms of the MIT License.

Package Sidebar

Install

npm i oauth2-server-model-prisma

Weekly Downloads

7

Version

0.9.0

License

MIT

Unpacked Size

125 kB

Total Files

15

Last publish

Collaborators

  • jpalumickas