|
- //
- // File.swift
- //
- //
- // Created by Michiel Carman on 9/24/24.
- //
-
- import Vapor
- import Fluent
-
-
-
- final class Token: Model, Content, @unchecked Sendable {
- static let schema = "token"
-
- @ID()
- var id: UUID?
-
- @Parent(key: "user_id")
- var user: User
-
- @Field(key: "value")
- var value: String
-
-
- init() {}
-
- init(id: UUID? = nil, userId: User.IDValue, token: String) {
- self.id = id
- self.$user.id = userId
- self.value = token
- }
- }
-
- extension Token {
- static func generate(for user: User) throws -> Token {
- let random = [UInt8].random(count: 32).base64
- return try Token( userId: user.requireID(), token: random)
- }
- }
-
- extension Token: ModelTokenAuthenticatable {
- typealias User = App.User
- static let valueKey = \Token.$value
- static let userKey = \Token.$user
-
- var isValid: Bool {
- true
- }
- }
|