Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct User : Content, PostgreSQLModel, Parameters {
- var id : Int?
- private(set) var email: String
- private(set) var password: String
- }
- extension User: BasicAuthenticatable {
- static let usernameKey: WritableKeyPath<User, String> = .email
- static let passwordKey: WritableKeyPath<User, String> = .password
- }
- private extension UserController {
- func registerUser(_ request: Request, newUser: User) throws -> Future<HTTPResponseStatus> {
- return try User.query(on: request).filter(.email == newUser.email).first().flatMap { existingUser in
- guard existingUser == nil else {
- throw Abort(.badRequest, reason: "a user with this email already exists" , identifier: nil)
- }
- let digest = try request.make(BCryptDigest.self)
- let hashedPassword = try digest.hash(newUser.password)
- let persistedUser = User(id: nil, email: newUser.email, password: hashedPassword)
- return persistedUser.save(on: request).transform(to: .created)
- }
- }
- }
Add Comment
Please, Sign In to add comment