Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Flat.angular.service('User', ['Auth', '$state', 'customView', 'ArrayTool', '$q', '$timeout', function (Auth, state, VIEW, ArrayTool, $q, timeout) {
- /* redirect хэлпер */
- function redirectTo(p) {
- if( !angular.isUndefined(p.success_redirect) ) {
- state.go(p.success_redirect);
- };
- };
- /* check auth function */
- function check () {
- $q.all(Auth.currentUser())
- .then(function(currentUser) {
- self.userData = currentUser;
- self.isAuth = true;
- },function(error) {
- self.userData = null;
- self.isAuth = false;
- });
- };
- /* Хэлпер для создания колбэков */
- function doCallback(foo) {
- if( angular.isFunction(foo) ) {
- return foo;
- };
- };
- /**/
- var self = this;
- /*check auth*/
- check();
- /**/
- this.userData = null;
- /*login*/
- self.signIn = function(p) {
- if( !self.isAuth ) {
- /*request*/
- Auth.login(p.data)
- /*success*/
- .then(function(success) {
- /**/
- self.isAuth = true;
- /**/
- redirectTo(p);
- /**/
- doCallback(p.callback.success)(success);
- },
- function(error) {
- /**/
- self.isAuth = false;
- /**/
- VIEW.alert.doCreater(error.data, VIEW.alert.error);
- /**/
- doCallback(p.callback.error)(error);
- });
- };
- };
- /*logout*/
- self.logout = function() {
- if( self.isAuth ) {
- Auth.logout()
- .then(function(success) {
- state.go("login");
- self.isAuth = false;
- self.userData = null;
- },
- function(error) {
- self.isAuth = true;
- VIEW.alert.error('Логаут провалился!')
- });
- };
- };
- /**/
- self.signUp = function(p) {
- /* Success function */
- function success(success) {
- if( success.status != 422 ) {
- /**/
- redirectTo(p);
- /**/
- VIEW.alert.success(VIEW.LANG.devise.registrations.signed_up_but_unconfirmed);
- /**/
- doCallback(p.callback.success)(success);
- } else {
- /* call error */
- error(success);
- };
- check();
- };
- /* Error function */
- function error(error) {
- /*do callback*/
- doCallback(p.callback.error)(error);
- };
- /*devise*/
- Auth.register(p.data)
- .then(success, error);
- };
- /* ROLES */
- this.hasRole = function(role) {
- /**/
- function hasRoles(roles) {
- var i = 0;
- roles.forEach(function(item) {
- ArrayTool.inArray(self.userData.roles, item) ? i++ : false;
- });
- return ( ArrayTool.length(roles) === i ? true : false );
- };
- /**/
- return ( angular.isString(role) ? ArrayTool.inArray(self.userData.roles, role) : ( angular.isArray(role) ? hasRoles(role) : false ) );
- };
- /**/
- this.check = check;
- }]);
Advertisement
Add Comment
Please, Sign In to add comment