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