Files
doneit-web/src/app/pages/login/login.page.ts
T

220 lines
5.1 KiB
TypeScript
Raw Normal View History

2020-08-05 15:39:16 +01:00
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
2020-08-06 14:31:07 +01:00
import { AuthService } from 'src/app/services/auth.service';
2021-07-01 09:52:36 +01:00
import { UserForm } from 'src/app/models/user.model';
import { ToastService } from 'src/app/services/toast.service';
import { environment } from 'src/environments/environment';
2021-07-01 09:52:36 +01:00
import { AlertController } from '@ionic/angular';
2021-02-01 13:31:33 +01:00
import { NotificationsService } from 'src/app/services/notifications.service';
2021-05-28 14:41:56 +01:00
import crypto from 'crypto-js'
2021-07-18 20:20:30 +01:00
import { LocalstoreService } from 'src/app/store/localstore.service';
2020-08-05 15:39:16 +01:00
@Component({
selector: 'app-login',
templateUrl: './login.page.html',
styleUrls: ['./login.page.scss'],
})
export class LoginPage implements OnInit {
logstatus: boolean;
username: string = environment.defaultuser;
password: string = environment.defaultuserpwd;
2021-05-10 14:53:46 +01:00
userattempt: UserForm;
2021-05-28 14:41:56 +01:00
code = []
2021-07-01 09:52:36 +01:00
hasPin: boolean
loginPreference: string
hasSession = false
2021-07-01 11:26:45 +01:00
setPin = false
2020-08-06 14:31:07 +01:00
constructor(
2021-02-01 13:31:33 +01:00
private notificatinsservice: NotificationsService,
2021-01-22 16:03:05 +01:00
private router: Router,
private authService: AuthService,
private toastService: ToastService,
2021-07-18 20:20:30 +01:00
public alertController: AlertController,
private localstoreService: LocalstoreService
2021-07-22 14:40:29 +01:00
) {
2021-07-01 11:26:45 +01:00
}
2021-07-01 09:52:36 +01:00
2021-07-01 11:26:45 +01:00
ngOnInit() {
2021-07-18 21:05:46 +01:00
// clear local storage
window.localStorage.clear();
2021-07-02 09:29:01 +01:00
// App has session
2021-07-18 20:20:30 +01:00
if(!this.localstoreService.get('UserData', false)) {
2021-07-02 09:29:01 +01:00
this.hasSession = false
} else {
this.hasSession = true
// this.router.navigate(['/home/events']);
}
2021-06-09 15:59:26 +01:00
2021-07-22 14:40:29 +01:00
let userData = this.localstoreService.get('UserData', {})
2021-07-02 09:29:01 +01:00
const loginPreference = userData?.loginPreference
const pin = userData?.PIN
2021-06-09 15:59:26 +01:00
2021-07-02 09:29:01 +01:00
if (pin) {
2021-07-22 14:40:29 +01:00
this.hasPin = true
2021-07-02 09:29:01 +01:00
} else {
this.hasPin = false
}
2021-06-09 15:59:26 +01:00
2021-07-02 09:29:01 +01:00
if (loginPreference) {
this.loginPreference = loginPreference
} else {
this.loginPreference = ''
}
2020-08-05 15:39:16 +01:00
2021-07-01 11:26:45 +01:00
}
2021-05-28 14:41:56 +01:00
2020-11-24 13:46:13 +01:00
//Function to validade the login inputs
2021-06-09 13:34:55 +01:00
validateUsername() {
2020-08-06 14:31:07 +01:00
return (
2021-01-22 16:03:05 +01:00
this.username.trim().length > 0
2021-06-09 13:34:55 +01:00
);
}
2021-07-22 14:40:29 +01:00
2021-06-09 13:34:55 +01:00
validatePassword() {
return (
this.password.trim().length > 0
2021-01-22 16:03:05 +01:00
);
2020-08-07 10:31:33 +01:00
}
2021-01-22 16:03:05 +01:00
async presentAlert(message: string) {
const alert = await this.alertController.create({
cssClass: 'my-custom-class',
header: 'Mensagem do sistema',
message: message,
buttons: ['OK']
});
await alert.present();
}
2021-06-04 11:37:56 +01:00
/* loginRocketChat() {
2021-02-01 13:31:33 +01:00
let postData = {
2021-02-08 15:16:29 +01:00
"user": this.username,
"password": this.password,
}
2021-05-28 14:41:56 +01:00
2021-02-01 13:31:33 +01:00
this.authService.loginChat(postData).subscribe((res: any) => {
2021-01-27 16:01:49 +01:00
console.log(res.data);
2021-02-25 12:41:29 +01:00
this.storageService.store(AuthConnstants.AUTH, res.data);
console.log('Login to Rocket chat OK');
2021-02-01 13:31:33 +01:00
}, (error: any) => {
console.log('Network error');
2021-02-01 13:31:33 +01:00
this.presentAlert('Network error ' + error);
});
2021-06-04 11:37:56 +01:00
} */
2021-01-22 16:03:05 +01:00
2021-04-09 09:48:14 +01:00
getToken() {
2021-07-01 09:52:36 +01:00
this.notificatinsservice.getAndpostToken(this.username);
2021-08-18 15:57:19 +01:00
//console.log('HERE');
2021-04-09 09:48:14 +01:00
}
2021-01-22 16:03:05 +01:00
async Login() {
2021-05-31 14:21:19 +01:00
2021-06-09 13:34:55 +01:00
if (this.validateUsername()) {
2021-08-20 18:02:50 +01:00
if(this.validatePassword()) {
2021-07-01 09:52:36 +01:00
2021-06-09 13:34:55 +01:00
this.userattempt = {
username: this.username,
password: this.password,
domainName: environment.domain,
BasicAuthKey: ""
2021-05-31 14:21:19 +01:00
}
2021-07-22 16:06:52 +01:00
let attempt = await this.authService.login(this.userattempt)
2021-07-22 14:40:29 +01:00
2021-06-09 14:00:14 +01:00
if (attempt) {
2021-06-09 13:34:55 +01:00
this.authService.loginChat(this.userattempt);
2021-06-25 09:35:50 +01:00
this.getToken();
2021-07-01 09:52:36 +01:00
this.hasSession = true
this.hasPin = false
2021-07-01 11:26:45 +01:00
this.setPin = true
2021-06-09 13:34:55 +01:00
2021-08-20 18:02:50 +01:00
// if(!this.hasPin || this.hasPin) {
// } else {
// this.router.navigate(['/home/events']);
// }
this.code = ['1','1','1','1']
this.storePin()
2021-06-09 13:34:55 +01:00
this.router.navigate(['/home/events']);
}
2021-01-22 16:03:05 +01:00
}
2021-07-01 09:52:36 +01:00
else {
2021-06-09 13:34:55 +01:00
this.toastService.badRequest('Por favor, insira a sua palavra-passe');
2021-02-25 10:47:13 +01:00
}
2021-01-22 16:03:05 +01:00
}
else {
2021-06-09 13:34:55 +01:00
this.toastService.badRequest('Por favor, insira o seu nome de utilizador');
2021-01-22 16:03:05 +01:00
}
2020-08-05 15:39:16 +01:00
}
2021-05-28 14:41:56 +01:00
setCode(code: string) {
2021-07-22 14:40:29 +01:00
2021-05-28 14:41:56 +01:00
if(this.code.length < 4) {
this.code.push(code)
}
if(this.code.length == 4) {
2021-07-22 14:40:29 +01:00
2021-05-31 14:21:19 +01:00
const code = this.code.join('')
const encrypted = crypto.SHA1(code)
2021-07-22 14:40:29 +01:00
2021-07-01 09:52:36 +01:00
if(!this.hasPin) {
2021-08-18 15:57:19 +01:00
// console.log('storePin')
2021-05-31 14:21:19 +01:00
this.storePin()
} else {
2021-08-18 15:57:19 +01:00
// console.log('pinLogin')
2021-05-31 14:21:19 +01:00
this.pinLogin()
}
2021-05-28 14:41:56 +01:00
}
}
clearCode() {
this.code =[]
}
2021-07-01 09:52:36 +01:00
pinLogin() {
2021-07-22 14:40:29 +01:00
2021-05-28 14:41:56 +01:00
const code = this.code.join('')
const encrypted = crypto.SHA1(code)
2021-07-22 14:40:29 +01:00
2021-07-18 20:20:30 +01:00
let userData = this.localstoreService.get('UserData', {})
2021-07-01 09:52:36 +01:00
const pin = userData?.PIN
2021-07-01 11:26:45 +01:00
2021-07-01 09:52:36 +01:00
//if( encrypted == pin) {
2021-07-22 14:40:29 +01:00
2021-07-18 20:20:30 +01:00
if( encrypted == this.localstoreService.get('UserData', false)) {
2021-07-01 09:52:36 +01:00
2021-06-15 15:09:20 +01:00
//this.toastService.successMessage()
2021-05-28 14:47:58 +01:00
this.router.navigate(['/home/events']);
2021-05-28 14:41:56 +01:00
} else {
2021-06-15 15:09:20 +01:00
this.toastService.badRequest('Pin incorreto')
2021-05-28 14:41:56 +01:00
this.code = []
}
}
2021-05-31 14:21:19 +01:00
storePin() {
2021-06-01 10:42:14 +01:00
2021-05-31 14:21:19 +01:00
const code = this.code.join('')
const encrypted = crypto.SHA1(code)
2021-07-22 14:40:29 +01:00
let userData: Object = this.localstoreService.get('UserData', {})
2021-05-31 14:21:19 +01:00
2021-07-01 09:52:36 +01:00
userData['PIN'] = encrypted
2021-07-02 09:29:01 +01:00
userData['loginPreference'] = 'none'
2021-05-31 14:21:19 +01:00
2021-07-22 14:40:29 +01:00
this.localstoreService.set('UserData', userData)
this.localstoreService.set('PIN', encrypted)
2021-06-08 15:59:06 +01:00
2021-07-18 21:21:06 +01:00
this.router.navigate(['/home/events']);
2021-07-22 14:40:29 +01:00
2021-05-28 14:41:56 +01:00
}
2021-07-22 14:40:29 +01:00
}