Пример #1
0
        public object Post(
            [FromBody] AccessCredentials credenciais,
            [FromServices] UsersDAO usersDAO,
            [FromServices] SigningConfigurations signingConfigurations,
            [FromServices] TokenConfigurations tokenConfigurations)
        {
            bool credenciaisValidas = false;

            if (credenciais != null && !String.IsNullOrWhiteSpace(credenciais.UserID))
            {
                if (credenciais.GrantType == "password")
                {
                    var usuarioBase = usersDAO.Find(credenciais.UserID);
                    credenciaisValidas = (usuarioBase != null &&
                                          credenciais.UserID == usuarioBase.UserID &&
                                          credenciais.AccessKey == usuarioBase.AccessKey);
                }
                else if (credenciais.GrantType == "refresh_token")
                {
                    if (!String.IsNullOrWhiteSpace(credenciais.RefreshToken))
                    {
                        var usuarioBase = usersDAO.FindByToken(credenciais.RefreshToken);

                        credenciaisValidas = (usuarioBase != null &&
                                              credenciais.UserID == usuarioBase.UserID &&
                                              credenciais.RefreshToken == usuarioBase.RefreshToken);
                    }
                }
            }

            if (credenciaisValidas)
            {
                return(GenerateToken(
                           credenciais.UserID, signingConfigurations,
                           tokenConfigurations, usersDAO.Find(credenciais.UserID).Roles, usersDAO));
            }
            else
            {
                return(new
                {
                    authenticated = false,
                    message = "Falha ao autenticar"
                });
            }
        }