local auth = require("lib.auth") local models = require("models") local constants = require("constants") local alphabet = "-_@0123456789abcdefghijklmnopqrstuvwABCDEFGHIJKLMNOPQRSTUVWXYZ" local function create_default_avatar() if models.Avatars:count() > 0 then print("default avatar must exist") return end models.Avatars:create({ file_path = "/avatars/default.webp", uploaded_at = os.time(), }) end local function create_admin() local username = "admin" local root_count = models.Users:count("username = ?", username) if root_count ~= 0 then print("admin account already exists.") return end math.randomseed(os.time()) local password = "" for _ = 1, 16 do local randi = math.random(#alphabet) password = password .. alphabet:sub(randi, randi) end local hash = auth.digest(password) models.Users:create({ username = username, password_hash = hash, permission = constants.PermissionLevel.ADMIN, }) print("Admin account created, use \"admin\" as the login and \"" .. password .. "\" as the password. This will only be shown once.") end local function create_deleted_user() local username = "DeletedUser" local root_count = models.Users:count("username = ?", username) if root_count ~= 0 then print("deleted user already exists") return end models.Users:create({ username = username, password_hash = "", permission = constants.PermissionLevel.SYSTEM, }) end create_default_avatar() create_admin() create_deleted_user()