rtmpdash/Pages/Register.cshtml.cs

45 lines
1.3 KiB
C#

using System;
using System.Linq;
using LinqToDB;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RTMPDash.DataModels;
using RTMPDash.DataModels.Tables;
namespace RTMPDash.Pages {
public class RegisterModel : PageModel {
public void OnPost() {
if (!Request.HasFormContentType
|| string.IsNullOrWhiteSpace(Request.Form["user"])
|| string.IsNullOrWhiteSpace(Request.Form["pass"])
|| string.IsNullOrWhiteSpace(Request.Form["code"]))
return;
using var db = new AppDb.DbConn();
if (!db.Invites.Any(p => p.Code == Request.Form["code"]))
return;
var user = db.Users.FirstOrDefault(p => p.Username == Request.Form["user"].ToString());
if (user != null) {
//user already exists
Response.Redirect("/Register?e=user_exists");
return;
}
user = new User {
Username = Request.Form["user"].ToString(),
Password = Request.Form["pass"].ToString().Sha256(),
StreamKey = Guid.NewGuid().ToString().Substring(9, 14),
PronounSubject = "they",
PronounPossessive = "their",
SrcRes = "unspecified"
};
db.Insert(user);
db.Delete(db.Invites.First(p => p.Code == Request.Form["code"]));
HttpContext.Session.SetString("authenticatedUser", user.Username);
}
}
}