Guest User

Untitled

a guest
Oct 5th, 2014
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Flat.angular.service('User', ['Auth', '$state', 'customView', 'ArrayTool', '$q', '$timeout', function (Auth, state, VIEW, ArrayTool, $q, timeout) {
  2.   /* redirect хэлпер */
  3.   function redirectTo(p) {
  4.     if( !angular.isUndefined(p.success_redirect) ) {
  5.       state.go(p.success_redirect);
  6.     };
  7.   };
  8.   /* check auth function */
  9.   function check () {
  10.     $q.all(Auth.currentUser())
  11.     .then(function(currentUser) {
  12.       self.userData = currentUser;
  13.       self.isAuth = true;
  14.     },function(error) {
  15.       self.userData = null;
  16.       self.isAuth = false;
  17.     });
  18.   };
  19.   /* Хэлпер для создания колбэков */
  20.   function doCallback(foo) {
  21.     if( angular.isFunction(foo) ) {
  22.       return foo;
  23.     };
  24.   };
  25.   /**/
  26.   var self = this;
  27.   /*check auth*/
  28.   check();
  29.   /**/
  30.   this.userData = null;
  31.   /*login*/
  32.   self.signIn = function(p) {
  33.     if( !self.isAuth ) {
  34.       /*request*/
  35.       Auth.login(p.data)
  36.       /*success*/
  37.       .then(function(success) {
  38.         /**/
  39.         self.isAuth = true;
  40.         /**/
  41.         redirectTo(p);
  42.         /**/
  43.         doCallback(p.callback.success)(success);
  44.       },
  45.       function(error) {
  46.         /**/
  47.         self.isAuth = false;
  48.         /**/
  49.         VIEW.alert.doCreater(error.data, VIEW.alert.error);
  50.         /**/
  51.         doCallback(p.callback.error)(error);
  52.       });
  53.     };
  54.   };
  55.   /*logout*/
  56.   self.logout = function() {
  57.     if( self.isAuth ) {
  58.       Auth.logout()
  59.       .then(function(success) {
  60.         state.go("login");
  61.         self.isAuth = false;
  62.         self.userData = null;
  63.       },
  64.       function(error) {
  65.         self.isAuth = true;
  66.         VIEW.alert.error('Логаут провалился!')
  67.       });
  68.     };
  69.   };
  70.   /**/
  71.   self.signUp = function(p) {
  72.     /* Success function */
  73.     function success(success) {
  74.       if( success.status != 422 ) {
  75.         /**/
  76.         redirectTo(p);
  77.         /**/
  78.         VIEW.alert.success(VIEW.LANG.devise.registrations.signed_up_but_unconfirmed);
  79.         /**/
  80.         doCallback(p.callback.success)(success);
  81.       } else {
  82.         /* call error */
  83.         error(success);
  84.       };
  85.       check();
  86.     };
  87.     /* Error function */
  88.     function error(error) {
  89.       /*do callback*/
  90.       doCallback(p.callback.error)(error);
  91.     };
  92.     /*devise*/
  93.     Auth.register(p.data)
  94.     .then(success, error);
  95.   };
  96.   /* ROLES */
  97.   this.hasRole = function(role) {
  98.     /**/
  99.     function hasRoles(roles) {
  100.       var i = 0;
  101.       roles.forEach(function(item) {
  102.         ArrayTool.inArray(self.userData.roles, item) ? i++ : false;
  103.       });
  104.       return ( ArrayTool.length(roles) === i ? true : false );
  105.     };
  106.     /**/
  107.     return ( angular.isString(role) ? ArrayTool.inArray(self.userData.roles, role) : ( angular.isArray(role) ? hasRoles(role) : false ) );
  108.   };
  109.   /**/
  110.   this.check = check;
  111. }]);
Advertisement
Add Comment
Please, Sign In to add comment