235 lines
6.6 KiB
TypeScript
235 lines
6.6 KiB
TypeScript
/** @file
|
|
* @author Edouard DUPIN
|
|
* @copyright 2018, Edouard DUPIN, all right reserved
|
|
* @license PROPRIETARY (see license file)
|
|
*/
|
|
|
|
import { Component, OnInit } from '@angular/core';
|
|
import { Router, ActivatedRoute } from '@angular/router';
|
|
import { checkLoginValidity, checkEmailValidity, checkPasswordValidity } from '../login/login';
|
|
import { fadeInAnimation } from '../../_animations/index';
|
|
import { UserService } from '../../service/user';
|
|
import { ArianeService } from '../../service/ariane';
|
|
|
|
|
|
@Component({
|
|
selector: 'app-sign-up',
|
|
templateUrl: './sign-up.html',
|
|
styleUrls: [ './sign-up.less' ],
|
|
animations: [ fadeInAnimation ],
|
|
host: { '[@fadeInAnimation]': '' }
|
|
})
|
|
|
|
export class SignUpScene implements OnInit {
|
|
private signUpIconWrong:string = 'icon-right-not-validate';
|
|
private signUpIconWait:string = 'icon-right-load';
|
|
private signUpIconRight:string = 'icon-right-validate';
|
|
|
|
public login:string = '';
|
|
public loginOK:boolean = false;
|
|
public loginHelp:string = '';
|
|
public loginIcon:string = '';
|
|
|
|
public email:string = '';
|
|
public emailOK:boolean = false;
|
|
public emailHelp:string = '';
|
|
public emailIcon:string = '';
|
|
|
|
public password:string = '';
|
|
public passOK:boolean = false;
|
|
public passHelp:string = '';
|
|
public passIcon:string = '';
|
|
|
|
public signUpButtonDisabled:boolean = true;
|
|
public error:string = '';
|
|
|
|
public rememberMe:boolean = true;
|
|
|
|
|
|
constructor(private userService: UserService,
|
|
private router: Router,
|
|
private route: ActivatedRoute,
|
|
private arianeService: ArianeService) {
|
|
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.arianeService.updateManual(this.route.snapshot.paramMap);
|
|
}
|
|
|
|
|
|
updateButtonVisibility():void {
|
|
if(this.loginOK === true &&
|
|
this.passOK === true &&
|
|
this.emailOK === true) {
|
|
this.signUpButtonDisabled = false;
|
|
} else {
|
|
this.signUpButtonDisabled = true;
|
|
}
|
|
this.error = '';
|
|
}
|
|
checkLogin(newValue:string):void {
|
|
// this.userService.loginSha("loooogin", "ekljkj", true);
|
|
this.login = newValue;
|
|
if(this.login === null ||
|
|
this.login.length === 0) {
|
|
this.loginOK = false;
|
|
this.loginIcon = '';
|
|
this.loginHelp = '';
|
|
this.updateButtonVisibility();
|
|
return;
|
|
}
|
|
if(this.login.length < 6) {
|
|
this.loginOK = false;
|
|
this.loginHelp = 'Need 6 characters';
|
|
this.loginIcon = '';
|
|
this.updateButtonVisibility();
|
|
return;
|
|
}
|
|
if(checkLoginValidity(this.login) === true) {
|
|
this.loginOK = false;
|
|
// this.loginHelp = "check in progress...";
|
|
this.loginIcon = this.signUpIconWait;
|
|
let self = this;
|
|
this.userService.checkLogin(this.login).then(() => {
|
|
// check if the answer is correct with the question
|
|
if(newValue !== self.login) {
|
|
return;
|
|
}
|
|
// the login exist ... ==> it is found...
|
|
self.loginOK = false;
|
|
self.loginHelp = 'Login already used ...';
|
|
self.loginIcon = self.signUpIconWrong;
|
|
self.updateButtonVisibility();
|
|
}, (error: number) => {
|
|
console.log(`1 ${ self}`);
|
|
// check if the answer is correct with the question
|
|
if(newValue !== self.login) {
|
|
return;
|
|
}
|
|
if(error === 404) {
|
|
self.loginOK = true;
|
|
self.loginHelp = '';
|
|
self.loginIcon = self.signUpIconRight;
|
|
self.updateButtonVisibility();
|
|
return;
|
|
}
|
|
console.log(`Status ${ error}`);
|
|
self.loginOK = false;
|
|
self.loginHelp = 'Login already used ...';
|
|
self.loginIcon = self.signUpIconWrong;
|
|
self.updateButtonVisibility();
|
|
});
|
|
} else {
|
|
this.loginOK = false;
|
|
this.loginHelp = 'Not valid: characters, numbers and "_-."';
|
|
}
|
|
this.updateButtonVisibility();
|
|
}
|
|
|
|
checkEmail(newValue:string):void {
|
|
this.email = newValue;
|
|
if(this.email === null ||
|
|
this.email.length === 0) {
|
|
this.emailOK = false;
|
|
this.updateButtonVisibility();
|
|
this.emailIcon = '';
|
|
this.emailHelp = '';
|
|
return;
|
|
}
|
|
if(this.email.length < 6) {
|
|
this.emailOK = false;
|
|
this.emailHelp = 'Need 6 characters';
|
|
this.updateButtonVisibility();
|
|
this.passIcon = '';
|
|
return;
|
|
}
|
|
if(checkEmailValidity(this.email) === true) {
|
|
this.emailOK = false;
|
|
this.emailHelp = '';
|
|
// this.loginHelp = "check in progress...";
|
|
this.emailIcon = this.signUpIconWait;
|
|
let self = this;
|
|
this.userService.checkEMail(this.email).then(() => {
|
|
// check if the answer is correct with the question
|
|
if(newValue !== self.email) {
|
|
return;
|
|
}
|
|
// the email exist ... ==> it is found...
|
|
self.emailOK = false;
|
|
self.emailHelp = 'email already used ...';
|
|
self.emailIcon = self.signUpIconWrong;
|
|
self.updateButtonVisibility();
|
|
}, (error: number) => {
|
|
// check if the answer is correct with the question
|
|
if(newValue !== self.email) {
|
|
return;
|
|
}
|
|
if(error === 404) {
|
|
self.emailOK = true;
|
|
self.emailHelp = '';
|
|
self.emailIcon = self.signUpIconRight;
|
|
self.updateButtonVisibility();
|
|
return;
|
|
}
|
|
console.log(`Status ${ error}`);
|
|
self.emailOK = false;
|
|
self.emailHelp = 'email already used ...';
|
|
self.emailIcon = self.signUpIconWrong;
|
|
self.updateButtonVisibility();
|
|
});
|
|
} else {
|
|
this.emailOK = false;
|
|
this.emailHelp = 'Not valid: characters, numbers, "_-." and email format: you@example.com';
|
|
}
|
|
this.updateButtonVisibility();
|
|
}
|
|
|
|
checkPassword(newValue:string):void {
|
|
this.password = newValue;
|
|
console.log(`ooooooooooooooo ${ this.password}`);
|
|
if(this.password === null) {
|
|
this.passOK = false;
|
|
this.passHelp = '';
|
|
this.updateButtonVisibility();
|
|
return;
|
|
}
|
|
if(this.password.length < 6) {
|
|
this.passOK = false;
|
|
this.passHelp = 'Need 6 characters';
|
|
} else if(checkPasswordValidity(this.password) === true) {
|
|
this.passOK = true;
|
|
this.passHelp = '';
|
|
} else {
|
|
this.passOK = false;
|
|
this.passHelp = 'Not valid: characters, numbers and "_-:;.,?!*+=}{([|)]% @&~#/\\<>"';
|
|
}
|
|
this.updateButtonVisibility();
|
|
}
|
|
onSignUp():void {
|
|
console.log('Validate ... ');
|
|
if(this.signUpButtonDisabled === true) {
|
|
// ... notify user ...
|
|
console.log('Not permited action ... ==> control does not validate this action ...');
|
|
return;
|
|
}
|
|
let self = this;
|
|
// disable the currect button
|
|
this.signUpButtonDisabled = true;
|
|
this.userService.create(this.login, this.email, this.password).then(
|
|
(value) => {
|
|
console.log('User created');
|
|
self.router.navigate([ 'login' ]);
|
|
// send a generic message in the pop-up enevts... self.emailHelp = "email already used ... (error 2)";
|
|
}, (value) => {
|
|
console.log('User NOT created');
|
|
// send a generic message in the pop-up enevts... self.emailHelp = "email already used ... (error 2)";
|
|
});
|
|
}
|
|
onCancel():void {
|
|
console.log(`onCancel ... '${ this.login }':'${ this.password }'`);
|
|
// $rootScope.currentModal = "";
|
|
}
|
|
}
|
|
|