Advertisement
afterlife88

Untitled

Oct 22nd, 2015
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
jQuery 5.90 KB | None | 0 0
  1. /*
  2.  * Библиотека для авторизации
  3.  */
  4. ;
  5. (function (global, $) {
  6.     'use strict';
  7.  
  8.     var Auth = function () {
  9.         return new Auth.init();
  10.     };
  11.  
  12.     /*
  13.     * Подготавливает массив объектов к отправки
  14.     *
  15.     * @param arr: массив объектов
  16.     * @return object
  17.     */
  18.     var prepareToSend = function (arr) {
  19.         var obj = {};
  20.         for (var i = 0, length = arr.length; i < length; i++) {
  21.             obj[arr[i].name] = arr[i].value;
  22.         }
  23.         return obj;
  24.     };
  25.  
  26.     Auth.prototype = {
  27.          /*
  28.          * Проверяет авторизован ли пользователь
  29.          */
  30.         checkAuthorization: function () {
  31.             if (localStorage['user']) {
  32.                 var fromLocal = JSON.parse(localStorage['user']);
  33.                 var hash = CryptoJS.HmacSHA1(fromLocal.idUser + fromLocal.secret, fromLocal.secret.toString()).toString();
  34.                 $.ajax({
  35.                     type: "GET",
  36.                     url: 'api/auth/getSecret',
  37.                     headers: {'idUser': fromLocal.idUser, 'hash': hash},
  38.                     success: function (data, statusText, xhr) {
  39.                         window.location.href = 'theme.html/#/theme';
  40.                     },
  41.                     error: function (xhr, textStatus, error) {
  42.                         window.location.href = '/';
  43.                     }
  44.                 });
  45.             }
  46.         },
  47.  
  48.          /*
  49.          * Регистрация пользователя
  50.          *
  51.          * @param obj: объект пришедший с валидной формы регистрации
  52.          */
  53.         registration: function (obj) {
  54.             $(".infoAuth").empty();
  55.             $.ajax({
  56.                 url: "api/Accounts/create",
  57.                 type: "POST",
  58.                 data: {
  59.                     "Name": obj.name,
  60.                     "Email": obj.email,
  61.                     "Password": obj.pass,
  62.                     "ConfirmPassword": obj.pass_confirmation,
  63.                     "Category": obj.category
  64.                 },
  65.                 statusCode: {
  66.                     200: function (data, statusText, xhr) {
  67.                         var massege = $(".infoAuth");
  68.                         massege.html('<p class="success">Акаунт створено!</p>');
  69.                         massege.slideDown();
  70.                     },
  71.                     415: function (data, statusText, error) {
  72.                         var arrayOfError = JSON.parse(data.getResponseHeader('error'));
  73.                         $(arrayOfError).each(function (k, v) {
  74.                             var massege = $(".infoAuth");
  75.                             massege.html('<p class="error">' + v + '</p>');
  76.                             massege.slideDown();
  77.                         });
  78.  
  79.                     },
  80.                     403: function (data, statusText, error) {
  81.                         var massege = $(".infoAuth");
  82.                         massege.html('<p class="error">' + error + '</p>');
  83.                         massege.slideDown();
  84.                     }
  85.                 }
  86.             });
  87.         },
  88.         /*
  89.          * Авторизация пользователя
  90.          *
  91.          * @param obj: объект пришедший с валидной формы входа
  92.          */
  93.         login: function (obj) {
  94.             $(".infoAuth").empty();
  95.             $.ajax({
  96.                 url: "api/auth/login",
  97.                 type: "PUT",
  98.                 data: {"email": obj.email, "password": obj.pass},
  99.                 statusCode: {
  100.                     200: function (data, statusText, xhr) {
  101.                         var values = JSON.parse(xhr.getResponseHeader('keys'));
  102.                         var name = values[2];
  103.                         localStorage['user'] = JSON.stringify({"idUser": values[0], "secret": values[1]});
  104.                         window.location.href = 'theme.html/#/theme';
  105.                     },
  106.  
  107.                     401: function (data, statusText, error) {
  108.                         var massege = $(".infoAuth");
  109.                         massege.html('<p class="error">' + error + '</p>');
  110.                         massege.slideDown();
  111.                     },
  112.  
  113.                     415: function (data, statusText, error) {
  114.                         var arrayOfError = JSON.parse(data.getResponseHeader('error'));
  115.                         $(arrayOfError).each(function (k, v) {
  116.                             var massege = $(".infoAuth");
  117.                             massege.html('<p class="error">' + v + '</p>');
  118.                             massege.slideDown();
  119.                         });
  120.                     }
  121.                 }
  122.             });
  123.         }
  124.     };
  125.  
  126.     Auth.init = function () {
  127.         var _this = this;
  128.  
  129.         //подключение модуля валидации и безопасности
  130.         $.validate({
  131.             modules: 'security'
  132.         });
  133.  
  134.         //отключаю отправку формы по нажанию на submit
  135.         $('form').on('submit', function () {
  136.             return false;
  137.         });
  138.  
  139.         //получение данных из формы
  140.         $('input[type=submit]').on('click', function (e) {
  141.             setTimeout(function () {
  142.                 var targetForm = $(e.target).parents('form');
  143.                 if (!targetForm.hasClass('has-error')) {
  144.                     if (targetForm.attr('id') === 'registration') {
  145.                         _this.registration(prepareToSend(targetForm.serializeArray()));
  146.                     } else if (targetForm.attr('id') === 'login')
  147.                         _this.login(prepareToSend(targetForm.serializeArray()));
  148.                 }
  149.             }, 0);
  150.         });
  151.     };
  152.  
  153.     Auth.init.prototype = Auth.prototype;
  154.  
  155.     global.uawcapp.Auth = Auth;
  156.  
  157. })(window, jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement