public async Task <ActionResult> AddUser(UserViewModel userViewModel) { var cookies = this.HttpContext.Request.Cookies; var retroId = Guid.Parse(userViewModel.RetroId); var userId = Guid.NewGuid(); using (var context = new SpeedyRetroDbContext()) { var retrospective = context.Retrospectives.Where(retro => retro.Guid == retroId).SingleOrDefault(); if (retrospective == null) { return(RedirectToRoute("Add-Retro-Route")); } var userModel = new User { Guid = userId, Name = userViewModel.Name, Retrospectives = new List <Retrospective>() }; userModel.Retrospectives.Add(retrospective); context.Users.Add(userModel); await context.SaveChangesAsync(); } var header = new Dictionary <string, object> { ["alg"] = "HS256", ["typ"] = "JWT" }; var payload = new Dictionary <string, object> { ["iss"] = "SpeedyRetro", ["exp"] = DateTime.UtcNow.AddYears(1).Second.ToString(), ["sub"] = "UserManagement", ["sr_uid"] = userId }; var secret = "SpeedyRetro is great"; var jwtToken = new JwtToken(header, payload, secret); var httpCookie = new HttpCookie("sr_user", jwtToken.ComputedValue()); httpCookie.Expires = DateTime.UtcNow.AddYears(1); this.HttpContext.Response.AppendCookie(httpCookie); return(Json(new { }, JsonRequestBehavior.AllowGet)); }