auth-service.service.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. import { Modal } from 'ngx-modialog/plugins/bootstrap';
  2. import { HttpClient, HttpRequest } from '@angular/common/http';
  3. import { Injectable } from '@angular/core';
  4. import * as JWT from 'jwt-decode';
  5. import { tokenNotExpired, JwtHelper } from 'angular2-jwt';
  6. import { Observable, Subject } from 'rxjs';
  7. import { ActivatedRoute } from '@angular/router';
  8. import { JwtHelperService } from '@auth0/angular-jwt';
  9. import { Location } from '@angular/common';
  10. @Injectable({
  11. providedIn: 'root'
  12. })
  13. export class AuthServiceService {
  14. constructor(private http: HttpClient,
  15. private location: Location,
  16. private modal: Modal,
  17. private route: ActivatedRoute) {
  18. }
  19. jwtHelper: JwtHelper = new JwtHelper();
  20. //user permision name
  21. addButton: string = 'add_user';
  22. editButton: string = 'edit_user';
  23. deleteButton: string = 'delete_uder';
  24. showAddBtn: boolean = false;
  25. showDeleteBtn:boolean = false;
  26. showEditBtn: boolean = false;
  27. showReportBtn: boolean = false;
  28. showPrintBtn: boolean = false;
  29. showPermissionsBtn: boolean = false;
  30. showHeaderLogin: boolean = false;
  31. showHeaderDashBoard: boolean = false;
  32. showMoreLinks:boolean = false;
  33. showDashboardHeader: boolean = false;
  34. internalHeader: boolean = false;
  35. end = '1990-01-01';
  36. arabicTemplate: boolean;
  37. arabicLanguage: boolean;
  38. englishLanguage:boolean;
  39. showArabicIcon:boolean;
  40. showEnglishIcon:boolean;
  41. pathApi: string = 'http://kfmc.info/back_end/api';
  42. pathImg: string = "http://kfmc.info/back_end/public/";
  43. myInnerHeight = window.innerHeight;
  44. imgSrc: string = '../../assets/image/avatar.png'; //page profile default
  45. iconImg: string = '../../assets/image/Group 92.png';
  46. showSearchHeader: boolean = true;
  47. headereClassActive:boolean = false;
  48. homeActivate:boolean = true;
  49. cachedRequests: Array<HttpRequest<any>> = [];
  50. notificationLogin: boolean = true;
  51. checkExternalFooter: boolean = false;
  52. parentsPage = [];
  53. footerData=[];
  54. dataLoginUser: any;
  55. //login function
  56. login(dataForm) {
  57. console.log(dataForm);
  58. return this.http.post(this.pathApi + '/login', dataForm);
  59. }
  60. //signup Function
  61. signUp(dataSignUp){
  62. console.log(dataSignUp);
  63. return this.http.post(this.pathApi + '/register', dataSignUp);
  64. }
  65. //return data user function
  66. setDataUser(user) {
  67. this.dataLoginUser = user.user;
  68. localStorage.setItem('userObject', JSON.stringify(this.dataLoginUser));
  69. console.log('data loooogin' , this.dataLoginUser);
  70. }
  71. //return user data
  72. returnUserData() {
  73. this.dataLoginUser = JSON.parse(localStorage.getItem('userObject'));
  74. return this.dataLoginUser;
  75. }
  76. //Authentication
  77. public getToken(): string {
  78. return localStorage.getItem('token');
  79. }
  80. public isAuthenticated(): boolean {
  81. // get the token
  82. const token = this.getToken();
  83. // console.log('toooooken',this.jwtHelper.isTokenExpired(token));
  84. // return a boolean reflecting
  85. // whether or not the token is expired
  86. if(token){
  87. return this.jwtHelper.isTokenExpired(token);
  88. }
  89. return true;
  90. }
  91. public collectFailedRequest(request): void {
  92. this.cachedRequests.push(request);
  93. }
  94. //previous back locarion
  95. perviousLocation() {
  96. this.location.back();
  97. }
  98. //out of page
  99. backFromEdit() {
  100. const dialogRef = this.modal.alert()
  101. .size('sm')
  102. .showClose(true)
  103. .title('تأكيد الخروج')
  104. .body(`
  105. <h4>الخروج من هذه الصفحه ؟ </h4>
  106. `)
  107. .open();
  108. dialogRef.result
  109. .then( result =>
  110. this.perviousLocation()
  111. );
  112. }
  113. setLocalLang(){
  114. if(! localStorage.getItem('lang')){
  115. localStorage.setItem('lang', "ar");
  116. this.arabicTemplate = true;
  117. this.arabicLanguage = true;
  118. this.englishLanguage = false;
  119. this.showArabicIcon= false;
  120. this.showEnglishIcon=true;
  121. }else{
  122. if(localStorage.getItem('lang')=='ar'){
  123. this.arabicTemplate = true;
  124. this.arabicLanguage = true;
  125. this.englishLanguage = false;
  126. this.showArabicIcon= false;
  127. this.showEnglishIcon=true;
  128. }else if(localStorage.getItem('lang')=='en'){
  129. this.arabicTemplate = false;
  130. this.arabicLanguage = false;
  131. this.englishLanguage = true;
  132. this.showArabicIcon = true;
  133. this.showEnglishIcon = false;
  134. }
  135. }
  136. }
  137. //language content
  138. onLanguageContent(typeLang:string) {
  139. localStorage.setItem('lang', typeLang);
  140. this.setLocalLang();
  141. }
  142. //get footer list
  143. onGetFooterData(typePageFooter:string) {
  144. if(typePageFooter == 'external') {
  145. return this.http.get(this.pathApi + '/get_footers_links/1');
  146. } else if(typePageFooter == 'internal' || 'dashboard') {
  147. return this.http.get(this.pathApi + '/get_footers_links');
  148. }
  149. }
  150. //prevent ngative value in input number
  151. onKeydown(e) {
  152. if(!((e.keyCode > 95 && e.keyCode < 106)
  153. || (e.keyCode > 47 && e.keyCode < 58)
  154. || e.keyCode == 8)) {
  155. return false;
  156. }
  157. }
  158. //function return higri date
  159. //function to convert date to higri date
  160. writeHijri(date, lang, type) {
  161. lang = lang || 'en';
  162. var options = {
  163. year: 'numeric', month: 'long', day: 'numeric'
  164. };
  165. var days = ['الأحد', 'الأثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعه', 'السبت'];
  166. if(type == 'system') {
  167. var date = date;
  168. } else if(type == 'header') {
  169. date = new Date();
  170. var dayName = days[date.getDay()];
  171. }
  172. //var date = date || new Date();
  173. if(dayName) {
  174. return dayName + ' ' + date.toLocaleString(lang + '-u-ca-islamic', options);
  175. } else {
  176. return date.toLocaleString(lang + '-u-ca-islamic', options);
  177. }
  178. }
  179. }