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);
}