public async Task <IActionResult> Register([FromBody] UserVM regUserVM)
        {
            regUserVM.Username = regUserVM.Username.ToLower();

            var regService = _service.GetService <IRegisterService>();

            //Check if is user exist;
            if (await regService.IsExist(regUserVM.Username))
            {
                ModelState.AddModelError("Username", "Username already exist");
            }

            //Validate Model State;
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState)); //retruns model state error
            }
            var user = new ApplicationUser
            {
                UserName = regUserVM.Username,
                Email    = regUserVM.Username
            };

            var result = await _userManager.CreateAsync(user, regUserVM.Password);

            if (result.Succeeded)
            {
                await _signInManager.SignInAsync(user, false);

                regUserVM.IdentityId = user.Id;

                var newUser = await regService.Register(regUserVM);

                var tokenString = new JWTGenerateToken().GenerateJwtToken(regUserVM.Username, newUser.UserId, newUser, _configuration);

                return(Ok(new { token = tokenString, username = regUserVM.Username }));
            }

            return(BadRequest(result.Errors));
        }
Esempio n. 2
0
        public async Task <IActionResult> Login([FromBody] AuthVM authVM)
        {
            var result = await _signInManager.PasswordSignInAsync(authVM.Username, authVM.Password, false, false);

            if (result.Succeeded)
            {
                var authService = _service.GetService <IAuthService>();

                var auth = await authService.Login(authVM);

                if (auth == null)
                {
                    return(Unauthorized());
                }

                var user = _userManager.Users.SingleOrDefault(r => r.Email == authVM.Username);

                var tokenString = new JWTGenerateToken().GenerateJwtToken(auth.Username, auth.UserId, auth, _configuration);

                return(Ok(new { token = tokenString, username = authVM.Username }));
            }

            return(Unauthorized());
        }