func Pages.AdminRegister(ctx) { var active = DB.LoginButton(ctx,false,""); var csrf=""; var pages = [ { active = false, route = "/packages", text = "Packages" }, { active = false, route = "/upload", text = "Upload" }, active ]; if(!active.admin) ctx.StatusCode = 401; else csrf = DB.CreateCSRF(ctx); if(ctx.Method == "POST") { var csrf2 = ctx.QueryParams.TryGetFirst("csrf"); if(!active.admin) {ctx.StatusCode = 401; return Shell("Not an admin", pages,

Not an admin

);} if(TypeOf(csrf2) != "String") {ctx.StatusCode = 401; return Shell("Invalid CSRF", pages,

Invalid CSRF

);} if(DB.VerifyCSRF(active.session, csrf2)) { var email = ctx.QueryParams.TryGetFirst("email"); var displayName = ctx.QueryParams.TryGetFirst("displayName"); var password = ctx.QueryParams.TryGetFirst("password"); var confirm = ctx.QueryParams.TryGetFirst("confirm"); var flags = ctx.QueryParams.GetFirstBoolean("verified") ? DB.FLAG_VERIFIED : DB.FLAG_VERIFY; flags |= (ctx.QueryParams.GetFirstBoolean("admin") ? DB.FLAG_ADMIN : 0); if(TypeOf(email) != "String" || TypeOf(displayName) != "String" || TypeOf(password) != "String" || TypeOf(confirm) != "String") return Shell("Invalid input",pages,

Invalid input

); if(password != confirm) return Shell("Passwords do not match",pages,

Passwords do not match

); var res = DB.CreateUserFromAdmin(email, displayName, password, flags); if(!res.Success) { return Shell(res.Reason, pages,

{res.Reason}

); } } else { ctx.StatusCode = 401; return Shell("Invalid CSRF", pages,

Invalid CSRF

); } } var html =

You are not authorized in the admin panel

; return Shell("Admin Register", pages,html); }