[keycloak-user] angularjs example for 1.4

Tair Sabirgaliev tair.sabirgaliev at bee.kz
Sun Oct 4 22:43:09 EDT 2015


 
Here is what we did for angular 1.4 :

"use strict";

var module = angular.module('hello.world', ['ngRoute', 'ngResource']);

var auth = {};
var logout = function(){
    console.log('*** LOGOUT');
    auth.loggedIn = false;
    auth.authz = null;
    window.location = auth.logoutUrl;
};

angular.element(document).ready(["$http", function ($http) {

    var keycloakAuth = new Keycloak('js/keycloak.json');
    auth.loggedIn = false;


    keycloakAuth.init({ onLoad: 'login-required' }).success(function () {
        auth.loggedIn = true;
        auth.authz = keycloakAuth;
        auth.logoutUrl = keycloakAuth.authServerUrl + "/realms/demo/tokens/logout?redirect_uri=http://localhost:9080/hello-world/";
        module.factory('Auth', function() {
            return auth;
        });
        angular.bootstrap(document, ["hello.world"]);

    }).error(function () {
        window.location.reload();
    });

}]);

module.factory('authInterceptor', ["$q", "Auth", function($q, Auth) {
    return {
        'request': function (config) {
            var deferred = $q.defer();
            if (Auth.authz.token) {
                Auth.authz.updateToken(5).success(function() {
                    config.headers = config.headers || {};
                    config.headers.Authorization = 'Bearer ' + Auth.authz.token;

                    deferred.resolve(config);
                }).error(function() {
                    deferred.reject('Failed to refresh token');
                });
            }
            return deferred.promise;
        },
        'requestError': function(rejection) {
            return $q.reject(rejection);
        },

        'response': function(response) {
            return response;
        },

        'responseError': function(response) {

            if (response.status == 401) {
                console.log('session timeout?');
                logout();
            } else if (response.status == 403) {
                alert("Forbidden");
            } else if (response.status == 404) {
                alert("Not found");
            } else if (response.status) {
                console.log(response.status);
                if (response.data && response.data.errorMessage) {
                    alert(response.data.errorMessage);
                } else {
                    alert("An unexpected server error has occurred");
                }
            } else if (response === 'Failed to refresh token') {
                logout();
            }
            return $q.reject(response);
        }
    };
}]);

module.config(['$httpProvider', function($httpProvider) {
    $httpProvider.interceptors.push('authInterceptor');
}]);


--  
Tair Sabirgaliev  
Bee Software, LLP



On October 5, 2015 at 02:57:31, keycloak-user-request at lists.jboss.org (keycloak-user-request at lists.jboss.org(mailto:keycloak-user-request at lists.jboss.org)) wrote:

> Date: Sat, 3 Oct 2015 20:17:04 +0200(http://airmail.calendar/2015-10-04%2000:17:04%20GMT+6)  
> From: "Kevin Hirschmann"  
> Subject: [keycloak-user] angularjs example for 1.4  
> To: "'keycloak-user'"  
> Message-ID: <00cd01d0fe07$b4ab5d60$1e021820$@huebinet.de(mailto:00cd01d0fe07$b4ab5d60$1e021820$@huebinet.de)>  
> Content-Type: text/plain; charset="iso-8859-1"  
>  
> Hello,  
>  
>  
>  
> I am trying to use the example provided here  
>  
>  
>  
> https://github.com/keycloak/keycloak/tree/master/examples/demo-template/angu  
> lar-product-app  
>  
>  
>  
> to connect from an angularjs client to a REST Endpoint. Both frontend and  
> backend are protected by keycloak.  
>  
> My problem is, that the example provided by the link above uses angularjs  
> 1.2 and doesn?t work with newer versions.  
>  
> (see  
> http://stackoverflow.com/questions/28212837/keycloak-unknown-provider-error)  
>  
>  
>  
> Has anyone on the mailing list been able to adapt the example to angular  
> 1.4? What steps are necessary?  
>  
>  
>  
> Kind Regards  
>  
>  
>  
> Kevin Hirschmann  
>  
>  
>  
> HUEBINET Informationsmanagement GmbH & Co. KG  
>  
>  
>  
>  
>  
> Der Nachrichtenaustausch mit HUEBINET Informationsmanagement GmbH & Co. KG,  
> Koblenz via E-Mail dient lediglich zu Informationszwecken.  
> Rechtsgesch?ftliche Erkl?rungen mit verbindlichem Inhalt k?nnen ?ber dieses  
> Medium nicht ausgetauscht werden, da die Manipulation von E-Mails durch  
> Dritte nicht ausgeschlossen werden kann.  
>  
>  
>  
> Email communication with HUEBINET Informationsmanagement GmbH & Co. KG is  
> only intended to provide information of a general kind, and shall not be  
> used for any statement with binding contents in respect to legal relations.  
> It is not totally possible to prevent a third party from manipulating emails  
> and email contents.  
>  
>  
>  
>  
>  
>  




More information about the keycloak-user mailing list