public async Task <IActionResult> SignInAsync(RequestIdentityRegister User)
        {
            HttpStatusCode     statusCode = HttpStatusCode.OK;
            ResponseSignInUser response   = new ResponseSignInUser();

            try
            {
                var result = await _signInManager.PasswordSignInAsync(User.Email, User.Password, true, lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    //Get JWT TOKEN
                    GenerateJWT token          = new GenerateJWT(_configuration);
                    var         userRegistered = await _userManager.FindByEmailAsync(User.Email);

                    response.IdUser = userRegistered.Id.ToString();
                    response.JWT    = token.GenerateTokenUser(userRegistered);
                    return(StatusCode((int)statusCode, response));
                }
                else if (result.IsLockedOut)
                {
                    response.ErrorMessage = $"LockedOut account with email {User.Email}";
                }
                else if (result.IsNotAllowed)
                {
                    response.ErrorMessage = $"Failed to signIn user with email {User.Email}, signIn is not allowed";
                }
                else
                {
                    response.ErrorMessage = $"Failed to signIn user with email {User.Email}, invalid credentials";
                }

                statusCode            = HttpStatusCode.BadRequest;
                response.StatusCode   = (int)statusCode;
                response.IsSucessfull = false;
            }
            catch (Exception e)
            {
                statusCode            = HttpStatusCode.InternalServerError;
                response.StatusCode   = (int)statusCode;
                response.IsSucessfull = false;
                response.ErrorMessage = "Internal server error";
                _logger.LogError(e, $"Failed to signIn user with email {User.Email}");
            }

            return(StatusCode((int)statusCode, response));
        }
        public async Task <ObjectResult> RegisterUser(RequestIdentityRegister newUser)
        {
            HttpStatusCode   statusCode = HttpStatusCode.OK;
            ResponseRegister response   = new ResponseRegister();

            try
            {
                //Using email as username
                var user = new User {
                    UserName = newUser.Email, Email = newUser.Email
                };
                var result = await _userManager.CreateAsync(user, newUser.Password);

                if (!result.Succeeded)
                {
                    statusCode            = HttpStatusCode.BadRequest;
                    response.StatusCode   = (int)statusCode;
                    response.IsSucessfull = false;
                    response.ErrorMessage = $"Failed to register user with email {newUser.Email}";

                    foreach (IdentityError error in result.Errors)
                    {
                        response.Errors.Add(error.Description);
                    }
                }
                else
                {
                    var userRegistered = await _userManager.FindByEmailAsync(newUser.Email);

                    response.IdUser = userRegistered.Id.ToString();
                }
            }
            catch (Exception e)
            {
                statusCode            = HttpStatusCode.InternalServerError;
                response.StatusCode   = (int)statusCode;
                response.IsSucessfull = false;
                response.ErrorMessage = "Internal server error";
                _logger.LogError(e, $"Failed to register user with email {newUser.Email}");
            }

            return(StatusCode((int)statusCode, response));
        }
Ejemplo n.º 3
0
        public async Task <ObjectResult> RegisterUser(RequestIdentityRegister newUser)
        {
            HttpStatusCode   statusCode = HttpStatusCode.OK;
            ResponseRegister response   = new ResponseRegister();

            try
            {
                var validationResultList = new List <ValidationResult>();

                if (Validator.TryValidateObject(newUser, new ValidationContext(newUser), validationResultList))
                {
                    //DocumentType documentType = _users.GetDocumentTypeByEnum(newUser.DocumentType.ToString());
                    var user = new User {
                        UserName = newUser.Document, Email = newUser.Email, Document = newUser.Document, Name = newUser.Name, LastName = newUser.LastName, DocumentType = newUser.DocumentType
                    };
                    var result = await _users.AddUserAsync(user, newUser.Password);

                    if (!result.Succeeded)
                    {
                        statusCode            = HttpStatusCode.BadRequest;
                        response.StatusCode   = (int)statusCode;
                        response.IsSucessfull = false;

                        foreach (IdentityError error in result.Errors)
                        {
                            response.Errors.Add(error.Description);
                        }
                    }
                    else
                    {
                        var userRegistered = await _userManager.FindByEmailAsync(newUser.Email);

                        response.IdUser = userRegistered.IdUser.ToString();
                    }
                }
                else
                {
                    foreach (ValidationResult error in validationResultList)
                    {
                        response.Errors.Add(error.ErrorMessage);
                    }
                }
            }

            catch (UserException e)
            {
                statusCode            = HttpStatusCode.BadRequest;
                response.StatusCode   = (int)statusCode;
                response.IsSucessfull = false;
                response.ErrorMessage = e.Message;
                response.Errors.Add(e.Message);
                _logger.LogError(e, $"Failed to register user with email {newUser.Email} and identification {newUser.Document}");
            }
            catch (DatabaseException e)
            {
                statusCode            = HttpStatusCode.InternalServerError;
                response.StatusCode   = (int)statusCode;
                response.IsSucessfull = false;
                response.ErrorMessage = e.Message;
                _logger.LogError(e, $"Failed to register user with email {newUser.Email} and identification {newUser.Document}");
            }
            catch (Exception e)
            {
                statusCode            = HttpStatusCode.InternalServerError;
                response.StatusCode   = (int)statusCode;
                response.IsSucessfull = false;
                response.ErrorMessage = "Internal server error";
                _logger.LogError(e, $"Failed to register user with email {newUser.Email} and identification {newUser.Document}");
            }

            return(StatusCode((int)statusCode, response));
        }