예제 #1
0
        public async Task <CustomResponse <User> > Adicionar(User user, AccessManager accessManager, Guid UserId)
        {
            var _response = new CustomResponse <User>();

            try
            {
                if (user.UserId == Guid.Empty)
                {
                    if (!_context.Users.Any(x => x.Username == user.Username || x.Email == user.Email))
                    {
                        var _rolesUser = new List <UserRole>();

                        foreach (Role role in _context.Roles.Where(x => x.NameRole != Roles.ROLE_API_MASTER).ToList <Role>())
                        {
                            _rolesUser.Add(new UserRole {
                                Role = role, User = user
                            });
                        }

                        var _password = Convert.ToBase64String(accessManager.HashPassword(user.Password, _rng));

                        var _userHash = new User()
                        {
                            Username        = user.Username,
                            Email           = user.Email,
                            Password        = _password,
                            ConfirmPassword = _password,
                            UserRoles       = _rolesUser
                        };

                        _response = await base.Adicionar(_userHash, UserId);
                    }
                    else
                    {
                        _response.Message    = "Usuário já cadastrado";
                        _response.StatusCode = StatusCodes.Status409Conflict;
                    }
                }
                else
                {
                    user.UserId   = UserId = Guid.NewGuid();
                    user.Password = user.ConfirmPassword = Convert.ToBase64String(accessManager.HashPassword(user.Password, _rng));

                    _response = await base.Adicionar(user, UserId);
                }
            }
            catch (Exception ex)
            {
                _response.Message = ex.Message;
                Error.LogError(ex);
            }

            return(_response);
        }
예제 #2
0
        public async Task <CustomResponse <User> > Incluir(User user, AccessManager accessManager, Guid UserId)
        {
            var _response = new CustomResponse <User>();

            try
            {
                if (user.UserRoles != null)
                {
                    if (user.UserRoles.Any(x => x.Role != null))
                    {
                        var _rolesUser = new List <UserRole>();

                        foreach (Role role in user.UserRoles.Where(x => x.Role.NameRole != Roles.ROLE_API_MASTER).Select(x => x.Role).ToList <Role>())
                        {
                            var _roleFound = _context.Roles.Where(x => x.NameRole == role.NameRole).FirstOrDefault();

                            _rolesUser.Add(new UserRole {
                                Role = _roleFound, User = user
                            });
                        }

                        var _password = Convert.ToBase64String(accessManager.HashPassword(user.Password, _rng));

                        var _userHash = new User()
                        {
                            Username        = user.Username,
                            Email           = user.Email,
                            Password        = _password,
                            ConfirmPassword = _password,
                            UserRoles       = _rolesUser
                        };

                        _response = await base.Incluir(_userHash, UserId);
                    }
                }
                else
                {
                    user.UserId   = UserId = Guid.NewGuid();
                    user.Password = user.ConfirmPassword = Convert.ToBase64String(accessManager.HashPassword(user.Password, _rng));

                    _response = await base.Incluir(user, UserId);
                }
            }
            catch (Exception ex)
            {
                _response.Message = ex.Message;
            }

            return(_response);
        }
예제 #3
0
        public async Task <CustomResponse <User> > Atualizar(User user, AccessManager accessManager, Guid UserId)
        {
            var _response = new CustomResponse <User>();

            try
            {
                if (user.UserId != UserId)
                {
                    var _userHash = new User()
                    {
                        UserId   = user.UserId,
                        Username = user.Username,
                        Email    = user.Email
                    };

                    if (!string.IsNullOrEmpty(user.Password))
                    {
                        _userHash.Password = Convert.ToBase64String(accessManager.HashPassword(user.Password, _rng));
                    }

                    _context.Update <User>(_userHash);

                    await _context.SaveChangesAsync();

                    _response.Message    = "Alteração";
                    _response.StatusCode = StatusCodes.Status200OK;

                    await GerarLog(_response.Message, typeof(User).Name, UserId);
                }
                else
                {
                    _response.Message    = "Não Autorizado";
                    _response.StatusCode = StatusCodes.Status401Unauthorized;
                }
            }
            catch (Exception ex)
            {
                _response.Message = ex.Message;
                Error.LogError(ex);
            }


            return(_response);
        }
예제 #4
0
        public async Task <CustomResponse <User> > ConfirmarSenha(User user, AccessManager accessManager, Guid UserId)
        {
            var _response = new CustomResponse <User>();

            try
            {
                if (!string.IsNullOrEmpty(user.Email))
                {
                    var _userHash = new User()
                    {
                        UserId   = UserId,
                        Username = user.Username,
                        Email    = user.Email
                    };

                    if (!string.IsNullOrEmpty(user.Password))
                    {
                        _userHash.Password = _userHash.ConfirmPassword = Convert.ToBase64String(accessManager.HashPassword(user.Password, _rng));
                    }

                    _context.Update <User>(_userHash);

                    await _context.SaveChangesAsync();

                    _response.Message    = "O Usuário alterou a senha padrão para definitiva";
                    _response.StatusCode = StatusCodes.Status200OK;

                    await GerarLog(_response.Message, typeof(User).Name, UserId);
                }
                else
                {
                    _response.Message    = "Não Autorizado";
                    _response.StatusCode = StatusCodes.Status401Unauthorized;
                }
            }
            catch (Exception ex)
            {
                _response.Message = ex.Message;
            }


            return(_response);
        }