/front/src/main/app/lib/componentes/oAuthServant/oathServant.js

https://gitlab.com/mario.melo/Servant · JavaScript · 139 lines · 113 code · 24 blank · 2 comment · 5 complexity · 8138912c75aea2785905b1b14fe13672 MD5 · raw file

  1. !function() {
  2. 'use strict';
  3. try {
  4. var modulo = angular.module('oauthServant', []);
  5. modulo.run(['$rootScope','$http', '$injector', function($rootScope, $http, $injector) {
  6. $rootScope.getPath = function(path){
  7. return "/" + appConfig.baseUrl + "/api/" + path;
  8. };
  9. $rootScope.getUsuarioLogado = function(){
  10. var servantSegurancaService = $injector.get('servantSegurancaService');
  11. var token = servantSegurancaService.getToken();
  12. if(token){
  13. $http({
  14. url: appConfig.login.url_usuario,
  15. method: "GET",
  16. headers: {'Authorization' : 'Bearer ' + token}
  17. }).then(function(sucesso){
  18. $rootScope.usuarioLogado = sucesso.data.resultado.usuario;
  19. sessionStorage.usuarioAutenticado = JSON.stringify($rootScope.usuarioLogado);
  20. },function(erro){
  21. $rootScope.usuarioLogado = null;
  22. sessionStorage.usuarioAutenticado = null;
  23. });
  24. }
  25. };
  26. $rootScope.getUsuarioLogado();
  27. }]);
  28. return modulo;
  29. }catch(e) {
  30. $log.error(e);
  31. }
  32. }();
  33. !function() {
  34. 'use strict';
  35. var modulo = angular.module('oauthServant');
  36. modulo.controller("oauthServantController", ['$rootScope', '$scope', '$window', '$q', '$interval','$http', '$injector','$state', '$notificationService', '$location',
  37. function($rootScope, $scope, $window, $q, $interval, $http, $injector, $state, $notificationService, $location){
  38. $rootScope.redirecionarCasoLogado = function(rota){
  39. if(!$rootScope.usuarioLogado){
  40. $('#modalLogin').modal('toggle');
  41. }else{
  42. $location.path(rota)
  43. }
  44. }
  45. $scope.signin = function(){
  46. var restService = $injector.get('restFactory');
  47. return {
  48. google: function(){
  49. socialSignin(restService.google.one("signin").getRestangularUrl(),
  50. restService.google.one("callback").getRestangularUrl());
  51. },
  52. facebook: function(){
  53. socialSignin(restService.facebook.one("signin").getRestangularUrl(),
  54. restService.facebook.one("callback").getRestangularUrl());
  55. },
  56. servant: function(){
  57. var servantAutenticacaoService = $injector.get('servantAutenticacaoService');
  58. servantAutenticacaoService.autenticar($scope.username, $scope.password).then(function(sucesso){
  59. $rootScope.getUsuarioLogado();
  60. fecharModal();
  61. },function(erro){
  62. $notificationService.$notify.error({title: 'Erro!', message: erro.data.error_description});
  63. });
  64. }
  65. };
  66. };
  67. $scope.logout = function(){
  68. var servantAutenticacaoService = $injector.get('servantAutenticacaoService')
  69. var $state = $injector.get('$state')
  70. servantAutenticacaoService.logout().then(function(){
  71. $rootScope.usuarioLogado = null;
  72. sessionStorage.usuarioAutenticado = null
  73. $state.go(appConfig.defaultRoute);
  74. });
  75. };
  76. $scope.oahthSocial = function(params, callbackUri){
  77. $http({
  78. url: callbackUri,
  79. method: "GET",
  80. params: params
  81. }).then(function(response){
  82. setUser(response.data.resultado, response.headers().token);
  83. $rootScope.usuarioLogado = response.data.resultado.usuario;
  84. fecharModal();
  85. }, function(erro){
  86. console.log(erro);
  87. });
  88. }
  89. function setUser(user, token){
  90. var servantSegurancaService = $injector.get('servantSegurancaService');
  91. servantSegurancaService.setUsuario(user);
  92. servantSegurancaService.setToken(token);
  93. }
  94. var socialSignin = function(uri, callbackUri){
  95. var q = $q.defer();
  96. //TODO: transformar o tamanho em constantes.. cada rede tem tamanho proprio
  97. //Exe:. https://blog.gisspan.com/2016/05/using-angular-promise-to-wrap-up-oauth.html https://searchcode.com/codesearch/view/84959059/
  98. var popup = $window.open(uri, '', "top=100,left=100,width=500,height=500");
  99. var popupChecker = $interval(function(){
  100. if (window.codeServantUser != undefined){
  101. q.resolve(window.codeServantUser);
  102. popup.close();
  103. $interval.cancel(popupChecker);
  104. $scope.oahthSocial(window.codeServantUser, callbackUri);
  105. window.codeServantUser = undefined;
  106. }else if (popup.closed){
  107. $interval.cancel(popupChecker);
  108. q.reject();
  109. }
  110. }, 1000)
  111. return q.promise;
  112. };
  113. }]);
  114. return modulo;
  115. }();