|
- //
- // File.swift
- //
- //
- // Created by Michiel Carman on 9/24/24.
- //
-
- import Fluent
- import Vapor
-
- final class User: Model, Content {
- static let schema = "user"
- final class Public: Content {
- var id: UUID?
- var username: String
-
- init(id: UUID?, username: String) {
- self.id = id
- self.username = username
- }
- }
- @ID()
- var id: UUID?
-
- @Field(key: "username")
- var username: String
-
- @Field(key: "password_hash")
- var passwordHash: String
-
-
- // @Timestamp(key: "created_at", on: .create)
- // var createdAt: Date?
- //
- // @Timestamp(key: "updated_at", on: .update)
- // var updatedAt: Date?
-
- init() {}
-
- init(id: UUID? = nil, username: String, passwordHash: String) {
- self.id = id
- self.username = username
- self.passwordHash = passwordHash
- }
- }
- extension User {
- func convertToPublic() -> User.Public {
- return User.Public(id: id, username: username)
- }
- }
- extension User: ModelAuthenticatable {
- static let usernameKey = \User.$username
- static let passwordHashKey = \User.$passwordHash
-
- func verify(password: String) throws -> Bool {
- try Bcrypt.verify(password, created: self.passwordHash)
- }
- }
-
-
-
-
|