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; } if (db.Users.Any(p => p.StreamKey == Request.Form["user"] || p.PrivateAccessKey == Request.Form["user"])) { //user invalid Response.Redirect("/Register?e=user_invalid"); return; } user = new User { Username = Request.Form["user"].ToString(), Password = Request.Form["pass"].ToString().Sha256(), StreamKey = Guid.NewGuid().ToString(), PronounSubject = "they", PronounPossessive = "their", AllowRestream = true }; db.Insert(user); db.Delete(db.Invites.First(p => p.Code == Request.Form["code"])); HttpContext.Session.SetString("authenticatedUser", user.Username); } }