changed federated authentication to use tokens instead of email addresses for security purposes

pull/4/head
Chris Veilleux 2019-04-08 00:14:51 -05:00
parent 0cdf06b5d7
commit 23bfc34042
3 changed files with 17 additions and 7 deletions

View File

@ -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>

View File

@ -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;
}
}

View File

@ -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]
},