public CommandResultToken Login(UserLoginCommand command) { var user = _repository.GetSalt(command.Username); if (user == null) { return(new CommandResultToken(false, "Login inválido. ", null)); } var salt_tabela = user.Salt; byte[] salt = Convert.FromBase64String(salt_tabela); var hashPassword = Hash.Create(command.Password, salt); // <-- monta hash para comparação / login user = _repository.Login(command.Username, hashPassword); if (user == null) { return(new CommandResultToken(false, "Login inválido. ", null)); } if (user.Active == false && user.Role == null) { AddNotification("Aguardando liberação de acesso.. Contacte o Gestor da aplicação se deseja agilizar a liberação. "); } else if (user.Active == false) { AddNotification("Usuário inativo. Contacte o Administrado. "); } if (Invalid) { return(new CommandResultToken(false, GroupNotifications.Group(Notifications), null)); } var log = new AccessLog( "Login", DateTime.Now, command.Username, null, null); _log.Register(log); user.HidePassword(); return(new CommandResultToken(true, "Login efetuado com sucesso! ", user)); }