63 lines
1.5 KiB
C#
63 lines
1.5 KiB
C#
using Authinator.Backend.Database;
|
|
using Authinator.Backend.Database.Tables;
|
|
using Authinator.Backend.Utils;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
|
|
namespace Authinator.Pages;
|
|
|
|
public class UserModel : PageModel {
|
|
public User ModelUser = null!;
|
|
|
|
public IActionResult OnGet() {
|
|
var db = new DatabaseContext();
|
|
|
|
if (!HttpContext.IsAuthenticated(db))
|
|
return Redirect("/Login");
|
|
|
|
#pragma warning disable CS8601
|
|
ModelUser = HttpContext.GetRemoteUser(db);
|
|
#pragma warning restore CS8601
|
|
if (ModelUser == null)
|
|
return Redirect("/");
|
|
|
|
return Page();
|
|
}
|
|
|
|
public async Task<IActionResult> OnPost() {
|
|
var db = new DatabaseContext();
|
|
|
|
if (!Request.HttpContext.IsAuthenticated(db))
|
|
return Redirect("/Login");
|
|
|
|
if (Request.Form["action"] == "save") {
|
|
var user = HttpContext.GetRemoteUser(db)!;
|
|
|
|
var newUsername = Request.Form["username"].ToString();
|
|
var newPassword = Request.Form["password"].ToString();
|
|
var newEmail = Request.Form["email"].ToString();
|
|
|
|
if (!string.IsNullOrWhiteSpace(newUsername) && newUsername != user.Username) {
|
|
if (db.Users.Any(p => p.Username == newUsername)) {
|
|
return BadRequest();
|
|
}
|
|
|
|
user.Username = newUsername;
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(newEmail) && newEmail != user.Email) {
|
|
user.Email = newEmail;
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(newPassword) && newPassword.Length >= 8) {
|
|
user.SetPassword(newPassword);
|
|
user.Iteration++;
|
|
}
|
|
|
|
await db.SaveChangesAsync();
|
|
}
|
|
|
|
return Redirect("/");
|
|
}
|
|
}
|