0.9.0 • Published 2 years ago

oauth2-server-model-prisma v0.9.0

Weekly downloads
9
License
MIT
Repository
github
Last release
2 years ago

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.

0.9.0

2 years ago

0.8.1

3 years ago

0.8.2

3 years ago

0.8.0

3 years ago

0.7.1

3 years ago

0.7.0

3 years ago

0.6.0

3 years ago

0.5.0

3 years ago

0.4.0

4 years ago

0.3.1

4 years ago

0.3.0

4 years ago

0.2.0

4 years ago

0.1.0

4 years ago