manageable-users/Sources/ManageableUsers/ManageableUsers.swift

28 lines
1.3 KiB
Swift

import Vapor
import Fluent
import FluentPostgresDriver
import SwiftSMTPVapor
public struct ManageableUsers {
public static func configure (_ app: Application, mainMenu: [MenuItem] = [], homePageName: String = "Home", userAdminPageName: String = "User Administration") async throws {
app.databases.use(DatabaseConfigurationFactory.postgres(configuration: .init(
hostname: Environment.get("DATABASE_HOST") ?? "localhost",
port: Environment.get("DATABASE_PORT").flatMap(Int.init(_:)) ?? SQLPostgresConfiguration.ianaPortNumber,
username: Environment.get("DATABASE_USERNAME") ?? "sampleapp",
password: Environment.get("DATABASE_PASSWORD") ?? "sampleapp_password",
database: Environment.get("DATABASE_NAME") ?? "sampleapp",
tls: .prefer(try .init(configuration: .clientDefault)))
), as: .psql)
_ = try Environment.baseURL
_ = try Environment.emailSender
app.lifecycle.use(SMTPInitializer(configuration: .fromEnvironment()))
app.views.use(.leaf)
app.leaf.tags["baseURL"] = BaseURLTag()
app.leaf.tags["hasRole"] = HasRoleTag()
app.leaf.tags["mainmenuItems"] = MenuItemsTag (mainMenu + [MenuItem (section: "useradmin", path: "admin", name: userAdminPageName, role: "admin")], homePageName: homePageName)
}
}