Beispiel #1
0
        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));
        }