changed federated authentication to use tokens instead of email addresses for security purposes
parent
0cdf06b5d7
commit
23bfc34042
|
@ -4,8 +4,10 @@
|
|||
<h2 class="mat-h2">Log In Using...</h2>
|
||||
<p>{{federatedLoginText}}</p>
|
||||
<div id="federated-buttons" fxLayout="column" fxLayoutAlign="center center">
|
||||
<shared-google-button></shared-google-button>
|
||||
<shared-facebook-button (facebookEmail)="onFacebookLogin($event)"></shared-facebook-button>
|
||||
<shared-google-button (googleToken)="onFederatedLogin($event)">
|
||||
</shared-google-button>
|
||||
<shared-facebook-button (facebookToken)="onFederatedLogin($event)">
|
||||
</shared-facebook-button>
|
||||
<shared-github-button></shared-github-button>
|
||||
</div>
|
||||
</mat-card>
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { FormGroup } from '@angular/forms';
|
||||
|
||||
export interface FederatedLoginToken {
|
||||
platform: string;
|
||||
token: string;
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'account-authentication-step',
|
||||
templateUrl: './authentication-step.component.html',
|
||||
|
@ -21,8 +26,10 @@ export class AuthenticationStepComponent implements OnInit {
|
|||
'servers are encrypted for your privacy and protection.';
|
||||
}
|
||||
|
||||
onFacebookLogin(email: string) {
|
||||
this.newAcctForm.patchValue({login: {federatedEmail: email}});
|
||||
onFederatedLogin(token: FederatedLoginToken) {
|
||||
this.newAcctForm.patchValue(
|
||||
{login: {federatedPlatform: token.platform, federatedToken: token.token}}
|
||||
);
|
||||
this.disableInternal = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,11 +24,11 @@ const noDelay = 0;
|
|||
export function loginValidator(): ValidatorFn {
|
||||
return (loginGroup: FormGroup) => {
|
||||
let valid = true;
|
||||
const federatedEmail = loginGroup.controls['federatedEmail'];
|
||||
const federatedToken = loginGroup.controls['federatedToken'];
|
||||
const userEnteredEmail = loginGroup.controls['userEnteredEmail'];
|
||||
const password = loginGroup.controls['password'];
|
||||
|
||||
if (federatedEmail.value) {
|
||||
if (federatedToken.value) {
|
||||
if (userEnteredEmail.value || password.value) {
|
||||
valid = false;
|
||||
}
|
||||
|
@ -101,7 +101,8 @@ export class NewComponent implements OnInit {
|
|||
private buildForm() {
|
||||
const loginGroup = this.formBuilder.group(
|
||||
{
|
||||
federatedEmail: [null],
|
||||
federatedPlatform: [null],
|
||||
federatedToken: [null],
|
||||
userEnteredEmail: [null, Validators.email],
|
||||
password: [null]
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue