public UserProfile LoginUser(UserProfileLogin userProfileLogin)
        {
            ArgumentsValidator.RaiseExceptionOfInvalidArguments(
                RaiseException.IfNotEmail(userProfileLogin.EMail, "Atenção: E-Mail inválido"),
                RaiseException.IfNullOrEmpty(userProfileLogin.PasswordHash, "Atenção: Senha inválida")
                );

            return(_userProfileService.LoginUser(userProfileLogin));
        }
Esempio n. 2
0
 private void AddUserProfileLogin(User user)
 {
     using (var dc = new LessThanDatabase())
     {
         var userProfileLogin = dc.UserProfileLogins.FirstOrDefault(a => a.UniqueIdentifier == user.ClaimedIdentifier);
         if (userProfileLogin == null)
         {
             userProfileLogin = new UserProfileLogin
             {
                 UniqueIdentifier = user.ClaimedIdentifier,
                 UserProfile      = dc.UserProfiles.First(a => a.UserProfileLogins.Any(b => b.UniqueIdentifier == User.Identity.Name))
             };
             dc.UserProfileLogins.AddObject(userProfileLogin);
             dc.SaveChanges();
         }
     }
 }
Esempio n. 3
0
        public UserProfile LoginUser(UserProfileLogin userProfileLogin)
        {
            bool _isSucess = false;

            List <DbParameter> _parametros = new List <DbParameter>();

            // Definição do parâmetros da consulta:
            SqlParameter pEmail = new SqlParameter()
            {
                ParameterName = "@email", Value = userProfileLogin.EMail
            };

            _parametros.Add(pEmail);
            // Fim da definição dos parâmetros

            try
            {
                query = @"SELECT P.PessoaId, P.Nome, P.EMail, P.NomeFoto, P.Sexo, 
                        P.DtNascimento , P.NrCelular, P.PasswordHash, P.DtCadastro, P.PerfilId, P.Ativo 
                    FROM dbo.AD_Pessoa P  
                    WHERE P.EMail = @email";

                // Define o banco de dados que será usando:
                CommandSql cmd = new CommandSql(strConnSql, query, EnumDatabaseType.SqlServer, parametros: _parametros);

                // Obtém os dados do banco de dados:
                UserProfile userProfile = GetCollection <UserProfile>(cmd)?.FirstOrDefault <UserProfile>();

                if (userProfile != null)
                {
                    _isSucess = PasswordFunctions.ValidaSenha(userProfileLogin.PasswordHash, userProfile.PasswordHash);
                }

                if (!_isSucess)
                {
                    userProfile = null;
                }

                return(userProfile);
            }
            catch (Exception ex)
            {
                throw new Exception($"{ex.Message}");
            }
        }
Esempio n. 4
0
        public Task <HttpResponseMessage> LoginUser(UserProfileLogin userProfileLogin)
        {
            HttpResponseMessage response = new HttpResponseMessage();
            var tsc = new TaskCompletionSource <HttpResponseMessage>();

            try
            {
                if (string.IsNullOrWhiteSpace(userProfileLogin.EMail))
                {
                    throw new InvalidOperationException("email não informado!");
                }
                if (string.IsNullOrWhiteSpace(userProfileLogin.PasswordHash))
                {
                    throw new InvalidOperationException("password não informado!");
                }

                var resultado = _userProfileApplication.LoginUser(userProfileLogin);

                response = Request.CreateResponse(HttpStatusCode.OK, resultado);

                tsc.SetResult(response);

                return(tsc.Task);
            }
            catch (Exception ex)
            {
                if (ex.GetType().Name == "InvalidOperationException" || ex.Source == "prmToolkit.Validation")
                {
                    response = Request.CreateResponse(HttpStatusCode.NotFound);
                    response.ReasonPhrase = ex.Message;
                }
                else
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message);
                }
                tsc.SetResult(response);

                return(tsc.Task);
            }
        }
Esempio n. 5
0
 private void AddUserProfile(User user)
 {
     using (var dc = new LessThanDatabase())
     {
         var userProfileLogin = dc.UserProfileLogins.FirstOrDefault(a => a.UniqueIdentifier == user.ClaimedIdentifier);
         if (userProfileLogin == null)
         {
             var userProfile = new UserProfile
             {
                 EmailAddress = user.EmailAddress,
                 FullName     = user.Name,
                 UserName     = user.EmailAddress
             };
             dc.UserProfiles.AddObject(userProfile);
             userProfileLogin = new UserProfileLogin
             {
                 UniqueIdentifier = user.ClaimedIdentifier,
                 UserProfile      = userProfile
             };
             dc.UserProfileLogins.AddObject(userProfileLogin);
             dc.SaveChanges();
         }
     }
 }
 public UserProfile LoginUser(UserProfileLogin userProfileLogin)
 {
     return(_userProfileRepository.LoginUser(userProfileLogin));
 }
Esempio n. 7
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            try
            {
                context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

                var _usuarioLogado = new { id = 0, nome = "" };

                if (context.UserName.Equals(_appUserFBTC))
                {
                    //Obter o token com o usuário de consulta do site da fbtc.org.br:
                    ArgumentsValidator.RaiseExceptionOfInvalidArguments(
                        RaiseException.IfTrue(context.Password != _appPassword, "Senha Inválida")
                        );

                    _usuarioLogado = new { id = 0, nome = "fbtc.org.br" };
                }
                else
                {
                    //Obter o Token de acesso com o login e a senha do usuário que está se logando no sistema:
                    if (string.IsNullOrWhiteSpace(context.UserName))
                    {
                        throw new InvalidOperationException("email não informado!");
                    }
                    if (string.IsNullOrWhiteSpace(context.Password))
                    {
                        throw new InvalidOperationException("password não informada!");
                    }

                    UserProfileLogin _userProfileLogin = new UserProfileLogin()
                    {
                        EMail        = context.UserName,
                        PasswordHash = context.Password
                    };

                    var usuarioLogado = _userProfileApplication.LoginUser(_userProfileLogin);

                    ArgumentsValidator.RaiseExceptionOfInvalidArguments(
                        RaiseException.IfNull(usuarioLogado, "Usuário ou Senha inválidos")
                        );

                    _usuarioLogado = new { id = usuarioLogado.PessoaId, nome = usuarioLogado.Nome };
                }

                var identity = new ClaimsIdentity(context.Options.AuthenticationType);

                // Definindo o Claims:
                identity.AddClaim(new Claim("Logado", Newtonsoft.Json.JsonConvert.SerializeObject(_usuarioLogado)));

                GenericPrincipal principal = new GenericPrincipal(identity, new string[] { });

                Thread.CurrentPrincipal = principal;

                context.Validated(identity);
            }
            catch (Exception ex)
            {
                context.SetError("invalid_grant", ex.Message);
                return;
            }
        }