Ejemplo n.º 1
0
        public async Task <IActionResult> Register([FromBody] RegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new BarOMeterIdentityUser()
            {
                UserName = model.Username, Email = model.Email
            };



            IdentityResult result = await _userManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                var sanitizedList = new List <string>();
                foreach (var error in result.Errors)
                {
                    if (error.Code == "DuplicateUserName" || error.Code == "DuplicateEmail" || error.Code == "PasswordRequiresUpper" || error.Code == "PasswordTooShort" || error.Code == "PasswordRequiresLower" || error.Code == "PasswordRequiresDigit")
                    {
                        sanitizedList.Add(error.Code);
                    }
                }

                return(BadRequest(sanitizedList));
            }

            var roleClaim = new Claim("Role", "Kunde");
            await _userManager.AddClaimAsync(user, roleClaim);


            var addResult = _customerController.AddCustomer(new CustomerDto
            {
                Email         = model.Email,
                DateOfBirth   = model.DateOfBirth,
                Name          = model.Name,
                FavoriteBar   = model.FavoriteBar,
                FavoriteDrink = model.FavoriteDrink,
                Username      = model.Username,
            });

            if (addResult is CreatedResult)
            {
                return(Ok());
            }
            else
            {
                await _userManager.RemoveClaimAsync(user, roleClaim);
            }
            return(BadRequest());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> RegisterAdmin([FromBody] AdminRegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new BarOMeterIdentityUser()
            {
                UserName = model.Username, Email = model.Email
            };

            IdentityResult result = await _userManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                return(BadRequest());
            }

            var roleClaim = new Claim("Role", "Admin");
            await _userManager.AddClaimAsync(user, roleClaim);

            return(Ok());
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> RegisterBarRep([FromBody] BarRepRegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new BarOMeterIdentityUser()
            {
                UserName = model.Username, Email = model.Email
            };


            var barResult = _barController.AddBar(new BarDto
            {
                BarName          = model.BarName,
                Address          = model.Address,
                AgeLimit         = model.AgeLimit,
                AvgRating        = model.AvgRating,
                CVR              = model.CVR,
                Educations       = model.Educations,
                Email            = model.Email,
                Image            = model.Image,
                LongDescription  = model.LongDescription,
                PhoneNumber      = model.PhoneNumber,
                ShortDescription = model.ShortDescription
            });

            if (!(barResult is CreatedResult))
            {
                // if error rollback claim
                var list = new List <string>();
                list.Add("Bar could not be created");
                return(BadRequest(list));
            }

            var addResult = _barRepresentativeController.AddBarRepresentative(new BarRepresentativeDto
            {
                Name     = model.Name,
                Username = model.Username,
                BarName  = model.BarName
            });


            if (!(addResult is CreatedResult))
            {
                // if error rollback bar and claim
                var list = new List <string>();
                list.Add("BarRepresentative exists");
                _barController.DeleteBar(model.BarName);
                return(BadRequest(list));
            }

            IdentityResult result = await _userManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                var sanitizedList = new List <string>();
                foreach (var error in result.Errors)
                {
                    if (error.Code == "DuplicateUserName" || error.Code == "DuplicateEmail" || error.Code == "PasswordRequiresUpper" || error.Code == "PasswordTooShort" || error.Code == "PasswordRequiresLower" || error.Code == "PasswordRequiresDigit")
                    {
                        sanitizedList.Add(error.Code);
                    }
                }

                _barController.DeleteBar(model.BarName);
                _barRepresentativeController.DeleteBarRepresentative(model.Username);

                return(BadRequest(sanitizedList));
            }
            var roleClaim = new Claim("Role", "BarRep");
            await _userManager.AddClaimAsync(user, roleClaim);

            return(Ok());
        }