From 0b417ee247759fa2a9f272b87b98286738c2386c Mon Sep 17 00:00:00 2001
From: Chris Hines <chris.hines@monash.edu>
Date: Fri, 31 May 2019 15:38:05 +0800
Subject: [PATCH] made sure an error message shows if you don't have an
 account, added signup links for CVL

---
 src/app/authorisation.service.ts         | 14 +++++++-------
 src/app/identity.ts                      |  1 +
 src/app/joblist/joblist.component.html   |  2 +-
 src/app/launcher/launcher.component.html | 11 +++++++----
 src/app/launcher/launcher.component.ts   |  4 ++++
 src/assets/config/authservers.json       |  6 ++++--
 6 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/src/app/authorisation.service.ts b/src/app/authorisation.service.ts
index 01da60b..beb7a7e 100644
--- a/src/app/authorisation.service.ts
+++ b/src/app/authorisation.service.ts
@@ -201,7 +201,7 @@ export class AuthorisationService {
     this.http.post<any>(this.backendURI+'/getcert',data, options)
                        .pipe(catchError(this.handleError([])))
                        .subscribe(resp => this.makeKeyCert(newkeypair.private, resp, token.sshauthzservice),
-                                  error => this.httperrorLogout(error,token.sshauthzservice));
+                                  error => this.signingError(error,token.sshauthzservice));
    console.log('getcert complete');
  }
 
@@ -231,14 +231,12 @@ public getKeys(id?: Identity) {
    keys.push(keyCert);
    sessionStorage.setItem('keys',JSON.stringify(keys))
    this.sshAdd(keyCert);
-   let path=localStorage.getItem('path');
-   console.log('authorisation complete, ready to navigate back to the correct view',path);
-
    // this.tesService.keyCert.next(keyCert);
    // As soon as the certificate has been generated, we log back out of the signing server
    if (!(sshauthzservice.logout === null)) {
      window.open(sshauthzservice.logout);
    }
+   let path=localStorage.getItem('path');
    this.readyToNavigate.next([true,path]);
  }
 
@@ -348,14 +346,16 @@ public getKeys(id?: Identity) {
    this.statusMsg.next('There was an error logging in or generating crypto tokens');
    console.error(error);
  }
- private httperrorLogout(error: any,sshauthzservice: SshAuthzServer) {
-   console.log('authorsation service got an error');
-   this.statusMsg.next('There was an error logging out and clearing all tokens');
+ private signingError(error: any,sshauthzservice: SshAuthzServer) {
+   this.statusMsg.next('You don\'t appear to have an acocunt on '+sshauthzservice.name);
    console.log(error);
    if (!(sshauthzservice.logout === null)) {
      window.open(sshauthzservice.logout);
    }
+   let path=localStorage.getItem('path');
+   this.readyToNavigate.next([true,path]);
  }
+ 
 
  private handleError<T> (result?: T) {
    return (error: any): Observable<T> => {
diff --git a/src/app/identity.ts b/src/app/identity.ts
index 217695f..f4c0183 100644
--- a/src/app/identity.ts
+++ b/src/app/identity.ts
@@ -57,4 +57,5 @@ export class SshAuthzServer {
   logout: string;
   userdefined: boolean;
   cafp: string;
+  signup: string;
 }
diff --git a/src/app/joblist/joblist.component.html b/src/app/joblist/joblist.component.html
index aa8e370..bd7e422 100644
--- a/src/app/joblist/joblist.component.html
+++ b/src/app/joblist/joblist.component.html
@@ -6,7 +6,7 @@
 <div *ngFor="let id of identities"> -->
 <mat-card style="width: 100%" style="box-sizing: border-box;">
     <div *ngIf="identity === undefined || identity == null" >
-      Select your username an compute site on the left to see running jobs or start new jobs.
+      Click login and select a provider or select one you've already logged in to.
     </div>
     <div *ngIf="(identity !== undefined) && (identity !== null)">
         Jobs running as {{ identity.displayName() }}      
diff --git a/src/app/launcher/launcher.component.html b/src/app/launcher/launcher.component.html
index 61fa197..49aa3da 100644
--- a/src/app/launcher/launcher.component.html
+++ b/src/app/launcher/launcher.component.html
@@ -18,15 +18,18 @@
     <mat-expansion-panel>
       <mat-expansion-panel-header>
         <mat-panel-title>
-            More Services
+            Login
         </mat-panel-title>
         </mat-expansion-panel-header>
         <div *ngFor="let sshauthzserver of (authService.loggedOutAuthZ | async)" style="width: 100%">
-          <button mat-button (click)=login(sshauthzserver) fxFlex style="text-align: left"> Run on {{ sshauthzserver.name }}</button>
+          <button mat-button (click)=login(sshauthzserver) fxFlex style="text-align: left"> Login to {{ sshauthzserver.name }}</button>
           <button mat-icon-button *ngIf="sshauthzserver.userdefined === true"><mat-icon>remove</mat-icon></button>
         </div>
+        <div *ngFor="let sshauthzserver of (authService.loggedOutAuthZ | async)" style="width: 100%">
+          <button mat-button (click)=signup(sshauthzserver) style="width: 100%; text-align: left"> Signup for {{ sshauthzserver.name }}</button>
+        </div>
         <button mat-button (click) =logout() style="width: 100%; text-align: left">Logout</button>
-        <button mat-button (click) ="authService.updateAgentContents()" style="width: 100%; text-align: left">Refresh Services</button>
+        <button mat-button (click) ="authService.updateAgentContents()" style="width: 100%; text-align: left">Refresh</button>
         </mat-expansion-panel>
     <div *ngFor="let id of computeSitesService.appidentities | async">
 	<mat-expansion-panel (click)=selectId(id)>
@@ -38,7 +41,7 @@
 	</div>
     <mat-expansion-panel>
         <mat-expansion-panel-header>
-            Advanced Options
+            Advanced
         </mat-expansion-panel-header>
         Select an API server
         <mat-select [ngModel]="selectedApiServer" (selectionChange)="backendSelectionService.setApiServer($event.value)">
diff --git a/src/app/launcher/launcher.component.ts b/src/app/launcher/launcher.component.ts
index 6beb0fe..8d1d511 100644
--- a/src/app/launcher/launcher.component.ts
+++ b/src/app/launcher/launcher.component.ts
@@ -107,6 +107,10 @@ export class LauncherComponent implements OnInit {
     this.authService.login(sshauthzserver);
   }
 
+  signup(sshauthzserver) {
+      window.open(sshauthzserver.signup);
+  }
+
 
   selectId(id: Identity) {
     this.identity=id;
diff --git a/src/assets/config/authservers.json b/src/assets/config/authservers.json
index 09455f5..56c5c67 100644
--- a/src/assets/config/authservers.json
+++ b/src/assets/config/authservers.json
@@ -9,7 +9,8 @@
       "name": "CVL",
       "icon": null,
       "scope": "user:email",
-      "cafp": "RSA SHA256:cmDxHrZQSPlBMUUcI/BWmruXho1XOzfXPDHSqVTwV2I"
+      "cafp": "RSA SHA256:cmDxHrZQSPlBMUUcI/BWmruXho1XOzfXPDHSqVTwV2I",
+      "signup": "https://docs.massive.org.au/M3/requesting-an-account.html"
     },
     {
       "authorise": "https://sshauthz.cloud.cvl.org.au/pysshauthz/oauth2/oauth/authorize/google",
@@ -20,6 +21,7 @@
       "name": "CVL with Google ID",
       "icon": null,
       "scope": "user:email",
-      "cafp": "RSA SHA256:cmDxHrZQSPlBMUUcI/BWmruXho1XOzfXPDHSqVTwV2I"
+      "cafp": "RSA SHA256:cmDxHrZQSPlBMUUcI/BWmruXho1XOzfXPDHSqVTwV2I",
+      "signup": "https://docs.massive.org.au/M3/requesting-an-account.html"
     }
 ]
-- 
GitLab