From c20d2fa87ac7b6a7e5c04b5f0fdb1ab5dba3195e Mon Sep 17 00:00:00 2001 From: Nikolaos Laskaris Date: Wed, 1 Nov 2017 19:18:27 +0200 Subject: [PATCH 1/2] MAJOR changes to login --- dmp-admin/src/app/app.component.ts | 3 + dmp-frontend/dmp-frontend-1-nov-2017.tar.gz | Bin 0 -> 165373 bytes dmp-frontend/package.json | 2 +- dmp-frontend/src/app/app-routing.module.ts | 20 +- dmp-frontend/src/app/app.component.css | 23 +- dmp-frontend/src/app/app.component.html | 56 +++ dmp-frontend/src/app/app.component.ts | 39 +- dmp-frontend/src/app/app.module.ts | 17 +- .../src/app/form/dynamic-form.component.ts | 2 +- dmp-frontend/src/app/guards/auth.guard.ts | 13 +- .../app/{login => login-OLD}/login-page.html | 0 .../app/{login => login-OLD}/login-page.ts | 2 +- .../googgle-sign-in.component.css | 11 + .../googgle-sign-in.component.html | 12 + .../googgle-sign-in.component.spec.ts | 25 ++ .../googgle-sign-in.component.ts | 86 +++++ .../main-sign-in/main-sign-in.component.css | 75 ++++ .../main-sign-in/main-sign-in.component.html | 43 +++ .../main-sign-in.component.spec.ts | 25 ++ .../main-sign-in/main-sign-in.component.ts | 61 +++ .../src/app/projects/projects.component.ts | 3 +- dmp-frontend/src/app/services/interceptor.ts | 19 +- .../services/login/native-login.service.ts | 31 ++ .../app/services/{ => login}/token.service.ts | 36 +- dmp-frontend/src/app/services/rest-base.ts | 2 +- .../src/app/services/server.service.ts | 14 +- .../src/assets/bootstrap-notify.min.js | 1 + dmp-frontend/src/assets/custom.css | 0 dmp-frontend/src/assets/custom.js | 38 ++ dmp-frontend/src/assets/icons/google-icon.svg | 1 + dmp-frontend/src/assets/icons/google-logo.svg | 1 + dmp-frontend/src/assets/icons/google_logo.png | Bin 0 -> 12227 bytes .../icons/index.dual-gear-loading-icon.svg | 3 + dmp-frontend/src/assets/icons/user-icon.png | Bin 0 -> 9164 bytes .../src/assets/jquery.json-viewer.css | 47 +++ dmp-frontend/src/assets/jquery.json-viewer.js | 148 ++++++++ dmp-frontend/src/assets/simple-sidebar.css | 122 ++++++ dmp-frontend/src/assets/vkbeautify.0.99.00.js | 358 ++++++++++++++++++ dmp-frontend/src/index.html | 65 ++-- dmp-frontend/src/styles.css | 4 +- 40 files changed, 1320 insertions(+), 88 deletions(-) create mode 100644 dmp-frontend/dmp-frontend-1-nov-2017.tar.gz create mode 100644 dmp-frontend/src/app/app.component.html rename dmp-frontend/src/app/{login => login-OLD}/login-page.html (100%) rename dmp-frontend/src/app/{login => login-OLD}/login-page.ts (96%) create mode 100644 dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.css create mode 100644 dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.html create mode 100644 dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.spec.ts create mode 100644 dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.ts create mode 100644 dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.css create mode 100644 dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.html create mode 100644 dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.spec.ts create mode 100644 dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.ts create mode 100644 dmp-frontend/src/app/services/login/native-login.service.ts rename dmp-frontend/src/app/services/{ => login}/token.service.ts (70%) create mode 100644 dmp-frontend/src/assets/bootstrap-notify.min.js create mode 100644 dmp-frontend/src/assets/custom.css create mode 100644 dmp-frontend/src/assets/custom.js create mode 100644 dmp-frontend/src/assets/icons/google-icon.svg create mode 100644 dmp-frontend/src/assets/icons/google-logo.svg create mode 100644 dmp-frontend/src/assets/icons/google_logo.png create mode 100644 dmp-frontend/src/assets/icons/index.dual-gear-loading-icon.svg create mode 100644 dmp-frontend/src/assets/icons/user-icon.png create mode 100644 dmp-frontend/src/assets/jquery.json-viewer.css create mode 100644 dmp-frontend/src/assets/jquery.json-viewer.js create mode 100644 dmp-frontend/src/assets/simple-sidebar.css create mode 100644 dmp-frontend/src/assets/vkbeautify.0.99.00.js diff --git a/dmp-admin/src/app/app.component.ts b/dmp-admin/src/app/app.component.ts index ae78b858b..176e3a616 100644 --- a/dmp-admin/src/app/app.component.ts +++ b/dmp-admin/src/app/app.component.ts @@ -23,6 +23,9 @@ export class AppComponent { showLogin : boolean = false; + login(){ + //redirect to login page + } logout(){ this.tokenService.logout(); diff --git a/dmp-frontend/dmp-frontend-1-nov-2017.tar.gz b/dmp-frontend/dmp-frontend-1-nov-2017.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..11a14df3f7a4d054a11b2277da8f7e5e48e10ea3 GIT binary patch literal 165373 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ℜ{ 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

KyzSs*F5a?gs`=;F{Py^ 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

PtNt^8e-q0e07Fp?6@s29<=X=b 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 V{5}32e}C}b{{ag@ue< + + +

+ + + + + + + + + \ No newline at end of file diff --git a/dmp-frontend/src/app/app.component.ts b/dmp-frontend/src/app/app.component.ts index 3342a1ce6..8472a4f8d 100644 --- a/dmp-frontend/src/app/app.component.ts +++ b/dmp-frontend/src/app/app.component.ts @@ -2,24 +2,41 @@ import { Component } from '@angular/core'; import { ServerService } from './services/server.service'; import { FieldBase } from '../app/form/fields/field-base'; import { JsonObjest } from '../app/entities/JsonObject.class'; - +import { TokenService, TokenProvider } from './services/login/token.service'; +import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; +import { MainSignInComponent } from './login/main-sign-in/main-sign-in.component'; @Component({ selector: 'app-root', - template: ` - - -`, - // template: ` - //
- // - //
- // `, + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'], providers: [] }) export class AppComponent { fields: any[]; + + constructor(private tokenService : TokenService, private router: Router) { + + } + + + //loggedInAs : string = null; + + showLogin : boolean = false; + + + login(){ + //redirect to login page + this.router.navigate(['/login-page'], { queryParams: { /*returnUrl: this.state.url*/ }}); + } + + logout(){ + this.tokenService.logout(); + this.router.navigate(['/login-page'], { queryParams: { /*returnUrl: this.state.url*/ }}); + } + + } -// \ No newline at end of file + diff --git a/dmp-frontend/src/app/app.module.ts b/dmp-frontend/src/app/app.module.ts index 2d7b67aee..4345ea4db 100644 --- a/dmp-frontend/src/app/app.module.ts +++ b/dmp-frontend/src/app/app.module.ts @@ -14,12 +14,11 @@ import { RestBase } from './services/rest-base'; import { DynamicFormComponent } from './form/dynamic-form.component'; import { DynamicFormFieldComponent } from './form/fields/dynamic-form-field.component'; import { ServerService } from './services/server.service'; -import { TokenService, TokenProvider } from './services/token.service'; +import { TokenService, TokenProvider } from './services/login/token.service'; import { LocalStorageService } from 'ngx-webstorage'; import { dataModelBuilder } from './services/dataModelBuilder.service'; import { DynamicFormGroupComponent } from './form/dynamic-form-group/dynamic-form-group.component'; -import { LoginComponent } from './login/login-page'; -import {GoogleSignInComponent} from 'angular-google-signin'; +//import { LoginComponent } from './login/login-page'; import { AppRoutingModule } from './app-routing.module'; import { AuthGuard } from './guards/auth.guard'; import { PageNotFoundComponent } from './not-found.component'; @@ -33,6 +32,10 @@ import { DmpModule } from './dmps/dmp.module'; import { TabModule } from './tabs/tab.module'; import { AngularDraggableModule } from 'angular2-draggable'; +import { NativeLoginService } from './services/login/native-login.service'; +import { GooggleSignInComponent } from './login/googgle-sign-in/googgle-sign-in.component'; +import { MainSignInComponent } from './login/main-sign-in/main-sign-in.component'; + import { HTTP_INTERCEPTORS } from '@angular/common/http'; @@ -43,8 +46,9 @@ import { HTTP_INTERCEPTORS } from '@angular/common/http'; DynamicFormFieldComponent, DynamicFormGroupComponent, TocComponent, - LoginComponent, - GoogleSignInComponent, + //LoginComponent, + GooggleSignInComponent, + MainSignInComponent, PageNotFoundComponent ], imports: [ @@ -67,7 +71,8 @@ import { HTTP_INTERCEPTORS } from '@angular/common/http'; useClass: GlobalInterceptor, multi: true, }, - ServerService, dataModelBuilder, AuthGuard, PaginationService, TokenService, LocalStorageService, RestBase, EestoreService + ServerService, dataModelBuilder, AuthGuard, PaginationService, TokenService, LocalStorageService, RestBase, EestoreService,NativeLoginService + ], bootstrap: [AppComponent] }) diff --git a/dmp-frontend/src/app/form/dynamic-form.component.ts b/dmp-frontend/src/app/form/dynamic-form.component.ts index a66e0dff5..491984e9e 100644 --- a/dmp-frontend/src/app/form/dynamic-form.component.ts +++ b/dmp-frontend/src/app/form/dynamic-form.component.ts @@ -11,7 +11,7 @@ import { dataModelBuilder } from '../../app/services/dataModelBuilder.service'; import { DataModel } from '../entities/DataModel'; import { GroupBase } from './dynamic-form-group/group-base'; import { PaginationService } from '../../app/services/pagination.service'; -import { TokenService, TokenProvider } from '../services/token.service'; +import { TokenService, TokenProvider } from '../services/login/token.service'; import { AngularDraggableModule } from 'angular2-draggable'; diff --git a/dmp-frontend/src/app/guards/auth.guard.ts b/dmp-frontend/src/app/guards/auth.guard.ts index 4b77957ef..069689145 100644 --- a/dmp-frontend/src/app/guards/auth.guard.ts +++ b/dmp-frontend/src/app/guards/auth.guard.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; -import { TokenService, TokenProvider } from '../services/token.service'; +import { TokenService, TokenProvider } from '../services/login/token.service'; @Injectable() export class AuthGuard implements CanActivate { @@ -8,14 +8,13 @@ export class AuthGuard implements CanActivate { constructor(private router: Router, private tokenService: TokenService) { } canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { - //if (localStorage.getItem('currentUser')) { it always returns true - if(this.tokenService.getToken()!=null){ - // logged in so return true - return true; - } + if(this.tokenService.isLoggedIn() == true){ + return true; + } // not logged in so redirect to login page with the return url this.router.navigate(['/login-page'], { queryParams: { returnUrl: state.url }}); return false; + } -} \ No newline at end of file +} diff --git a/dmp-frontend/src/app/login/login-page.html b/dmp-frontend/src/app/login-OLD/login-page.html similarity index 100% rename from dmp-frontend/src/app/login/login-page.html rename to dmp-frontend/src/app/login-OLD/login-page.html diff --git a/dmp-frontend/src/app/login/login-page.ts b/dmp-frontend/src/app/login-OLD/login-page.ts similarity index 96% rename from dmp-frontend/src/app/login/login-page.ts rename to dmp-frontend/src/app/login-OLD/login-page.ts index 8a3c002e1..169a15775 100644 --- a/dmp-frontend/src/app/login/login-page.ts +++ b/dmp-frontend/src/app/login-OLD/login-page.ts @@ -1,7 +1,7 @@ import { Component, OnInit, NgZone, AfterViewInit, ElementRef } from '@angular/core'; import { GoogleSignInSuccess } from 'angular-google-signin'; import { Router, ActivatedRoute } from '@angular/router'; -import { TokenService, TokenProvider } from '../services/token.service'; +import { TokenService, TokenProvider } from '../services/login/token.service'; @Component({ selector: 'login-page', diff --git a/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.css b/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.css new file mode 100644 index 000000000..7ecba8a01 --- /dev/null +++ b/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.css @@ -0,0 +1,11 @@ +.nomargin{ + margin-top: 0px; + margin-bottom: 0px; + margin-left: 0px; + margin-right: 0px; +} + +.width-range { + max-width: 500px; + min-width: 300px; +} \ No newline at end of file diff --git a/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.html b/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.html new file mode 100644 index 000000000..e84f17f92 --- /dev/null +++ b/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.html @@ -0,0 +1,12 @@ + + + + +
+ + +
+ + + + diff --git a/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.spec.ts b/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.spec.ts new file mode 100644 index 000000000..ee11f64bd --- /dev/null +++ b/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GooggleSignInComponent } from './googgle-sign-in.component'; + +describe('GooggleSignInComponent', () => { + let component: GooggleSignInComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GooggleSignInComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GooggleSignInComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.ts b/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.ts new file mode 100644 index 000000000..316c22035 --- /dev/null +++ b/dmp-frontend/src/app/login/googgle-sign-in/googgle-sign-in.component.ts @@ -0,0 +1,86 @@ +import { Component, OnInit, ElementRef, AfterViewInit, VERSION } from '@angular/core'; +import { TokenService, TokenProvider } from '../../services/login/token.service'; +import {Router} from '@angular/router'; + +declare const gapi: any; + +var $ = require("jquery"); + +import '../../../assets/custom.js'; +declare function simple_notifier(type: string, title: string, message:string): any; + +@Component({ + selector: 'googgle-sign-in', + templateUrl: './googgle-sign-in.component.html', + styleUrls: ['./googgle-sign-in.component.css'] +}) +export class GooggleSignInComponent implements OnInit, AfterViewInit { + + //token:any; + + constructor(private element: ElementRef, private tokenService : TokenService, private router : Router) { + + } + + ngOnInit() { + } + + private clientId:string = '1010962018903-glegmqudqtl1lub0150vacopbu06lgsg.apps.googleusercontent.com'; + + private scope = [ + 'profile', + 'email' + //, + //'https://www.googleapis.com/auth/plus.me', + //'https://www.googleapis.com/auth/contacts.readonly', + //'https://www.googleapis.com/auth/admin.directory.user.readonly' + ].join(' '); + + public auth2: any; + + public googleInit() { + + gapi.load('auth2', () => { + this.auth2 = gapi.auth2.init({ + client_id: this.clientId, + cookiepolicy: 'single_host_origin', + scope: this.scope + }); + var buttonElement = this.element.nativeElement.querySelector('#googleBtn'); + this.attachSignin(buttonElement); + }); + } + + public attachSignin(element) { + this.auth2.attachClickHandler(element, {}, + (googleUser) => { + //simple_notifier("success",null,"Successful login"); + let profile = googleUser.getBasicProfile(); + this.tokenService.login(googleUser.getAuthResponse().id_token, TokenProvider.google, profile.getName(), profile.getEmail()); + this.router.navigate(['/dmps'], { queryParams: { /*returnUrl: this.state.url*/ }}); + }, + function (error) { + simple_notifier("danger",null,"Failed to login"); + console.log(JSON.stringify(error, undefined, 2)); + }); + + } + + + + ngAfterViewInit() { + this.googleInit(); + } + +/* + signOut() { + var auth2 = gapi.auth2.getAuthInstance(); + auth2.signOut().then(function () { + console.log('User signed out.'); + }); + } +*/ + +} + + diff --git a/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.css b/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.css new file mode 100644 index 000000000..e49f49b9a --- /dev/null +++ b/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.css @@ -0,0 +1,75 @@ +.form-signin +{ + max-width: 330px; + padding: 15px; + margin: 0 auto; +} +.form-signin .form-signin-heading, .form-signin .checkbox +{ + margin-bottom: 10px; +} +.form-signin .checkbox +{ + font-weight: normal; +} +.form-signin .form-control +{ + position: relative; + font-size: 16px; + height: auto; + padding: 10px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.form-signin .form-control:focus +{ + z-index: 2; +} +.form-signin input[type="text"] +{ + margin-bottom: -1px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +.form-signin input[type="password"] +{ + margin-bottom: 10px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.account-wall +{ + margin-top: 20px; + padding: 40px 0px 20px 0px; + background-color: #f7f7f7; + -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3); + box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3); +} +.login-title +{ + color: #555; + font-size: 18px; + font-weight: 400; + display: block; +} +.profile-img +{ + width: 96px; + height: 96px; + margin: 0 auto 10px; + display: block; + -moz-border-radius: 50%; + -webkit-border-radius: 50%; + border-radius: 50%; +} +.need-help +{ + margin-top: 10px; +} +.new-account +{ + display: block; + margin-top: 10px; +} \ No newline at end of file diff --git a/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.html b/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.html new file mode 100644 index 000000000..660c3348b --- /dev/null +++ b/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.html @@ -0,0 +1,43 @@ +
+
+
+

+ +
+
+ +
+ +
+
+
+ +
+
+ +
+ diff --git a/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.spec.ts b/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.spec.ts new file mode 100644 index 000000000..cd7c7a960 --- /dev/null +++ b/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MainSignInComponent } from './main-sign-in.component'; + +describe('MainSignInComponent', () => { + let component: MainSignInComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MainSignInComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MainSignInComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.ts b/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.ts new file mode 100644 index 000000000..ef16d6c9a --- /dev/null +++ b/dmp-frontend/src/app/login/main-sign-in/main-sign-in.component.ts @@ -0,0 +1,61 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { NativeLoginService } from '../../services/login/native-login.service'; +import { TokenService, TokenProvider } from '../../services/login/token.service'; +import {Router} from '@angular/router'; + +import '../../../assets/custom.js'; +declare function simple_notifier(type: string, title: string, message:string): any; + +@Component({ + selector: 'app-main-sign-in', + templateUrl: './main-sign-in.component.html', + styleUrls: ['./main-sign-in.component.css'] +}) +export class MainSignInComponent implements OnInit { + + + nativeLoginForm : any; + + creds : any = {"username":"","password":""}; + + + constructor( private fb: FormBuilder, private nativeLogin : NativeLoginService, private tokenService : TokenService, private router : Router) { + + } + + + createProjectEditorForm(){ + + this.nativeLoginForm = this.fb.group({ + username: ['', Validators.required ], + password: ['', Validators.required ] + }); + + } + + + ngOnInit() { + this.createProjectEditorForm(); + } + + + login(){ + //login using the credentials + + this.nativeLogin.login(this.creds.username, this.creds.password).subscribe( + response => { + + simple_notifier("success",null,"Successful login"); + + this.tokenService.login(response['token'], TokenProvider.native, this.creds.username, response['email']); + this.router.navigate(['/dmps'], { queryParams: { /*returnUrl: this.state.url*/ }}); + }, + err => { + simple_notifier("danger",null,"Failed to login"); + } + ); + + } + +} diff --git a/dmp-frontend/src/app/projects/projects.component.ts b/dmp-frontend/src/app/projects/projects.component.ts index 6214acbd5..cefdf21c9 100644 --- a/dmp-frontend/src/app/projects/projects.component.ts +++ b/dmp-frontend/src/app/projects/projects.component.ts @@ -13,7 +13,6 @@ import { ModalComponent } from '../modal/modal.component'; import { HttpErrorResponse } from '@angular/common/http'; import { FormGroup, FormControl } from '@angular/forms'; //na dw an xreiazontai import { NgForm } from '@angular/forms'; -import { TokenService, TokenProvider } from '../services/token.service'; declare var $ :any; @@ -67,7 +66,7 @@ export class ProjectsComponent implements OnInit{ constructor( private serverService: ServerService, private route: ActivatedRoute, - private router: Router, private tokenService: TokenService){ + private router: Router){ this.datasetDropDown = new DropdownField(); this.datasetDropDown.options = []; this.datasets = []; diff --git a/dmp-frontend/src/app/services/interceptor.ts b/dmp-frontend/src/app/services/interceptor.ts index 3ccc2d28e..9ac5e9d7e 100644 --- a/dmp-frontend/src/app/services/interceptor.ts +++ b/dmp-frontend/src/app/services/interceptor.ts @@ -1,15 +1,13 @@ import {Injectable} from '@angular/core'; import {Observable} from 'rxjs/Observable'; import {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse} from '@angular/common/http'; -import { TokenService, TokenProvider } from './token.service'; +import { TokenService, TokenProvider } from './login/token.service'; @Injectable() export class GlobalInterceptor implements HttpInterceptor { - constructor(private tokenService: TokenService) { - - } + constructor(public tokenService: TokenService) {} intercept(req: HttpRequest, next: HttpHandler): Observable> { @@ -20,19 +18,14 @@ export class GlobalInterceptor implements HttpInterceptor { } */ }, (err: any) => { - if (err instanceof HttpErrorResponse) {debugger; + if (err instanceof HttpErrorResponse) { if (err.status === 401) { - var auth2 = gapi.auth2.getAuthInstance(); -     auth2.signOut().then(function () { -       console.log('User signed out.'); - localStorage.removeItem('currentUser'); - this.router.navigate(['/login-page']); -     }); - this.tokenService.setToken(null); - //EDW VALE TO KWDIKA GIA TO LOGOUT KAI SXOLIASE TON OPOU ALLOU TON EXEIS + this.tokenService.logout(); } } }); + + //return next.handle(req); } } \ No newline at end of file diff --git a/dmp-frontend/src/app/services/login/native-login.service.ts b/dmp-frontend/src/app/services/login/native-login.service.ts new file mode 100644 index 000000000..5330defdd --- /dev/null +++ b/dmp-frontend/src/app/services/login/native-login.service.ts @@ -0,0 +1,31 @@ +import { Injectable, OnInit } from '@angular/core'; +import { Observable } from 'rxjs'; +import { TokenService, TokenProvider } from '../login/token.service' +import { HttpClient , HttpHeaders, HttpParams} from '@angular/common/http'; +import {RestBase} from '../rest-base'; + +@Injectable() +export class NativeLoginService implements OnInit { + + + constructor(private restBase: RestBase) { + } + + ngOnInit(){ + + } + + + login(username, password){ + var credentials = {"username": username, "password":password}; + return this.restBase.login("nativeLogin", credentials); + } + + + +} + + + + + diff --git a/dmp-frontend/src/app/services/token.service.ts b/dmp-frontend/src/app/services/login/token.service.ts similarity index 70% rename from dmp-frontend/src/app/services/token.service.ts rename to dmp-frontend/src/app/services/login/token.service.ts index 0521179f6..38f777af6 100644 --- a/dmp-frontend/src/app/services/token.service.ts +++ b/dmp-frontend/src/app/services/login/token.service.ts @@ -4,12 +4,15 @@ import {LocalStorageService} from 'ngx-webstorage'; import 'rxjs/add/operator/map'; import { DOCUMENT } from '@angular/platform-browser'; + declare var jQuery : any; +import '../../../assets/custom.js'; +declare function sign_out_google(): any; + @Injectable() export class TokenService { - constructor (private storage : LocalStorageService, @Inject(DOCUMENT) private document) { //var csrfToken : string = jQuery(document).find('meta[name="csrf-token"]').attr('content'); //this.setCSRFToken(csrfToken); @@ -66,12 +69,37 @@ export class TokenService { } + login(token: string, provider: TokenProvider, username: string, email: string){ + + this.setLoggedIn(true); + this.setToken(token); + this.setProvider(provider); + this.setUsername(username); + this.setEmail(email); + + window.location.reload(); + + } + + + logout(){ + //set the log out actions here + this.setLoggedIn(false); + this.setEmail(null); + this.setUsername(null); + this.setToken(null); + + if(this.getProvider() == TokenProvider.google){ + sign_out_google(); + } + + this.setProvider(null); + } + + } export enum TokenProvider { native, google } - - - diff --git a/dmp-frontend/src/app/services/rest-base.ts b/dmp-frontend/src/app/services/rest-base.ts index 46e77966c..7a3c2acb3 100644 --- a/dmp-frontend/src/app/services/rest-base.ts +++ b/dmp-frontend/src/app/services/rest-base.ts @@ -1,5 +1,5 @@ import { HttpClient , HttpHeaders, HttpParams } from '@angular/common/http'; -import { TokenService, TokenProvider } from './token.service' +import { TokenService, TokenProvider } from './login/token.service' import 'rxjs/Rx'; diff --git a/dmp-frontend/src/app/services/server.service.ts b/dmp-frontend/src/app/services/server.service.ts index 8d9169dfa..4366e49e4 100644 --- a/dmp-frontend/src/app/services/server.service.ts +++ b/dmp-frontend/src/app/services/server.service.ts @@ -6,8 +6,8 @@ import {dataModelBuilder} from '../../app/services/dataModelBuilder.service'; import { DatasetProfile } from '../entities/datasetprofile'; import {DataModel} from '../entities/DataModel'; import {Project} from '../entities/model/project'; -import {LoginComponent} from '../../app/login/login-page'; -import { TokenService, TokenProvider } from './token.service'; +//import {LoginComponent} from '../../app/login/login-page'; +import { TokenService, TokenProvider } from './login/token.service'; import {RestBase} from './rest-base'; import 'rxjs/Rx'; @@ -130,14 +130,8 @@ public updateDatsetsProfile(data:any){ logOut() { - -     var auth2 = gapi.auth2.getAuthInstance(); -     auth2.signOut().then(function () { -       console.log('User signed out.'); - localStorage.removeItem('currentUser'); -     }); - this.tokenService.setToken(null); //kanonika prepei na mpei mesa sthn function..... -   } + this.tokenService.logout(); + } getData() { diff --git a/dmp-frontend/src/assets/bootstrap-notify.min.js b/dmp-frontend/src/assets/bootstrap-notify.min.js new file mode 100644 index 000000000..01e7f3091 --- /dev/null +++ b/dmp-frontend/src/assets/bootstrap-notify.min.js @@ -0,0 +1 @@ +!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t("object"==typeof exports?require("jquery"):jQuery)}(function(t){function s(s){var e=!1;return t('[data-notify="container"]').each(function(i,n){var a=t(n),o=a.find('[data-notify="title"]').text().trim(),r=a.find('[data-notify="message"]').html().trim(),l=o===t("
"+s.settings.content.title+"
").html().trim(),d=r===t("
"+s.settings.content.message+"
").html().trim(),g=a.hasClass("alert-"+s.settings.type);return l&&d&&g&&(e=!0),!e}),e}function e(e,n,a){var o={content:{message:"object"==typeof n?n.message:n,title:n.title?n.title:"",icon:n.icon?n.icon:"",url:n.url?n.url:"#",target:n.target?n.target:"-"}};a=t.extend(!0,{},o,a),this.settings=t.extend(!0,{},i,a),this._defaults=i,"-"===this.settings.content.target&&(this.settings.content.target=this.settings.url_target),this.animations={start:"webkitAnimationStart oanimationstart MSAnimationStart animationstart",end:"webkitAnimationEnd oanimationend MSAnimationEnd animationend"},"number"==typeof this.settings.offset&&(this.settings.offset={x:this.settings.offset,y:this.settings.offset}),(this.settings.allow_duplicates||!this.settings.allow_duplicates&&!s(this))&&this.init()}var i={element:"body",position:null,type:"info",allow_dismiss:!0,allow_duplicates:!0,newest_on_top:!1,showProgressbar:!1,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:null,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},onShow:null,onShown:null,onClose:null,onClosed:null,icon_type:"class",template:''};String.format=function(){for(var t=arguments[0],s=1;s .progress-bar').removeClass("progress-bar-"+t.settings.type),t.settings.type=i[n],this.$ele.addClass("alert-"+i[n]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-"+i[n]);break;case"icon":var a=this.$ele.find('[data-notify="icon"]');"class"===t.settings.icon_type.toLowerCase()?a.removeClass(t.settings.content.icon).addClass(i[n]):(a.is("img")||a.find("img"),a.attr("src",i[n]));break;case"progress":var o=t.settings.delay-t.settings.delay*(i[n]/100);this.$ele.data("notify-delay",o),this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i[n]).css("width",i[n]+"%");break;case"url":this.$ele.find('[data-notify="url"]').attr("href",i[n]);break;case"target":this.$ele.find('[data-notify="url"]').attr("target",i[n]);break;default:this.$ele.find('[data-notify="'+n+'"]').html(i[n])}var r=this.$ele.outerHeight()+parseInt(t.settings.spacing)+parseInt(t.settings.offset.y);t.reposition(r)},close:function(){t.close()}}},buildNotify:function(){var s=this.settings.content;this.$ele=t(String.format(this.settings.template,this.settings.type,s.title,s.message,s.url,s.target)),this.$ele.attr("data-notify-position",this.settings.placement.from+"-"+this.settings.placement.align),this.settings.allow_dismiss||this.$ele.find('[data-notify="dismiss"]').css("display","none"),(this.settings.delay<=0&&!this.settings.showProgressbar||!this.settings.showProgressbar)&&this.$ele.find('[data-notify="progressbar"]').remove()},setIcon:function(){"class"===this.settings.icon_type.toLowerCase()?this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon):this.$ele.find('[data-notify="icon"]').is("img")?this.$ele.find('[data-notify="icon"]').attr("src",this.settings.content.icon):this.$ele.find('[data-notify="icon"]').append('Notify Icon')},styleDismiss:function(){this.$ele.find('[data-notify="dismiss"]').css({position:"absolute",right:"10px",top:"5px",zIndex:this.settings.z_index+2})},styleURL:function(){this.$ele.find('[data-notify="url"]').css({backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:this.settings.z_index+1})},placement:function(){var s=this,e=this.settings.offset.y,i={display:"inline-block",margin:"0px auto",position:this.settings.position?this.settings.position:"body"===this.settings.element?"fixed":"absolute",transition:"all .5s ease-in-out",zIndex:this.settings.z_index},n=!1,a=this.settings;switch(t('[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])').each(function(){e=Math.max(e,parseInt(t(this).css(a.placement.from))+parseInt(t(this).outerHeight())+parseInt(a.spacing))}),this.settings.newest_on_top===!0&&(e=this.settings.offset.y),i[this.settings.placement.from]=e+"px",this.settings.placement.align){case"left":case"right":i[this.settings.placement.align]=this.settings.offset.x+"px";break;case"center":i.left=0,i.right=0}this.$ele.css(i).addClass(this.settings.animate.enter),t.each(Array("webkit-","moz-","o-","ms-",""),function(t,e){s.$ele[0].style[e+"AnimationIterationCount"]=1}),t(this.settings.element).append(this.$ele),this.settings.newest_on_top===!0&&(e=parseInt(e)+parseInt(this.settings.spacing)+this.$ele.outerHeight(),this.reposition(e)),t.isFunction(s.settings.onShow)&&s.settings.onShow.call(this.$ele),this.$ele.one(this.animations.start,function(){n=!0}).one(this.animations.end,function(){s.$ele.removeClass(s.settings.animate.enter),t.isFunction(s.settings.onShown)&&s.settings.onShown.call(this)}),setTimeout(function(){n||t.isFunction(s.settings.onShown)&&s.settings.onShown.call(this)},600)},bind:function(){var s=this;if(this.$ele.find('[data-notify="dismiss"]').on("click",function(){s.close()}),this.$ele.mouseover(function(){t(this).data("data-hover","true")}).mouseout(function(){t(this).data("data-hover","false")}),this.$ele.data("data-hover","false"),this.settings.delay>0){s.$ele.data("notify-delay",s.settings.delay);var e=setInterval(function(){var t=parseInt(s.$ele.data("notify-delay"))-s.settings.timer;if("false"===s.$ele.data("data-hover")&&"pause"===s.settings.mouse_over||"pause"!=s.settings.mouse_over){var i=(s.settings.delay-t)/s.settings.delay*100;s.$ele.data("notify-delay",t),s.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i).css("width",i+"%")}t<=-s.settings.timer&&(clearInterval(e),s.close())},s.settings.timer)}},close:function(){var s=this,e=parseInt(this.$ele.css(this.settings.placement.from)),i=!1;this.$ele.attr("data-closing","true").addClass(this.settings.animate.exit),s.reposition(e),t.isFunction(s.settings.onClose)&&s.settings.onClose.call(this.$ele),this.$ele.one(this.animations.start,function(){i=!0}).one(this.animations.end,function(){t(this).remove(),t.isFunction(s.settings.onClosed)&&s.settings.onClosed.call(this)}),setTimeout(function(){i||(s.$ele.remove(),s.settings.onClosed&&s.settings.onClosed(s.$ele))},600)},reposition:function(s){var e=this,i='[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])',n=this.$ele.nextAll(i);this.settings.newest_on_top===!0&&(n=this.$ele.prevAll(i)),n.each(function(){t(this).css(e.settings.placement.from,s),s=parseInt(s)+parseInt(e.settings.spacing)+t(this).outerHeight()})}}),t.notify=function(t,s){var i=new e(this,t,s);return i.notify},t.notifyDefaults=function(s){return i=t.extend(!0,{},i,s)},t.notifyClose=function(s){"warning"===s&&(s="danger"),"undefined"==typeof s||"all"===s?t("[data-notify]").find('[data-notify="dismiss"]').trigger("click"):"success"===s||"info"===s||"warning"===s||"danger"===s?t(".alert-"+s+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):s?t(s+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):t('[data-notify-position="'+s+'"]').find('[data-notify="dismiss"]').trigger("click")},t.notifyCloseExcept=function(s){"warning"===s&&(s="danger"),"success"===s||"info"===s||"warning"===s||"danger"===s?t("[data-notify]").not(".alert-"+s).find('[data-notify="dismiss"]').trigger("click"):t("[data-notify]").not(s).find('[data-notify="dismiss"]').trigger("click")}}); \ No newline at end of file diff --git a/dmp-frontend/src/assets/custom.css b/dmp-frontend/src/assets/custom.css new file mode 100644 index 000000000..e69de29bb diff --git a/dmp-frontend/src/assets/custom.js b/dmp-frontend/src/assets/custom.js new file mode 100644 index 000000000..eb5dc8256 --- /dev/null +++ b/dmp-frontend/src/assets/custom.js @@ -0,0 +1,38 @@ + +var sign_out_google = (function() { + var auth2 = gapi.auth2.getAuthInstance(); + auth2.signOut().then(function () { + console.log('User signed out from google.'); + }); +}); + + +var simple_notifier = (function(type, title, message) { + return notify(type, title, message, null, null, null, null, null, null, null, null, null, null); +}); + + + +function notify(type, title, message, delay, icon, url, target, allow_dismiss, offset_x, offset_y, animate_enter, animate_exit, newest_on_top){ + + var options = {}; + if(icon!=null) options.icon = icon; + if(title!=null) options.title = title; + if(message!=null) options.message = message; + if(url!=null) options.url = url; + if(target!=null) options.target = target; + + var settings = {}; + if(type!=null) settings.type = type; + if(allow_dismiss!=null) settings.allow_dismiss = allow_dismiss; + if(delay!=null) settings.delay = delay; + //settings.delay = -1; + + return $.notify(options,settings, delay); + +} + + + + + diff --git a/dmp-frontend/src/assets/icons/google-icon.svg b/dmp-frontend/src/assets/icons/google-icon.svg new file mode 100644 index 000000000..06dc52f0a --- /dev/null +++ b/dmp-frontend/src/assets/icons/google-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dmp-frontend/src/assets/icons/google-logo.svg b/dmp-frontend/src/assets/icons/google-logo.svg new file mode 100644 index 000000000..519fe653e --- /dev/null +++ b/dmp-frontend/src/assets/icons/google-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dmp-frontend/src/assets/icons/google_logo.png b/dmp-frontend/src/assets/icons/google_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dd259538d19f19a50a580518423fe17eedebf733 GIT binary patch literal 12227 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 + + \ No newline at end of file diff --git a/dmp-frontend/src/assets/icons/user-icon.png b/dmp-frontend/src/assets/icons/user-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fa881fcdd556e38ec1dc0bb4876bb6d9e08df023 GIT binary patch literal 9164 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 literal 0 HcmV?d00001 diff --git a/dmp-frontend/src/assets/jquery.json-viewer.css b/dmp-frontend/src/assets/jquery.json-viewer.css new file mode 100644 index 000000000..2c72ae5fa --- /dev/null +++ b/dmp-frontend/src/assets/jquery.json-viewer.css @@ -0,0 +1,47 @@ +/* Syntax highlighting for JSON objects */ +ul.json-dict, ol.json-array { + list-style-type: none; + margin: 0 0 0 1px; + border-left: 1px dotted #ccc; + padding-left: 2em; +} +.json-string { + color: #0B7500; +} +.json-literal { + color: #1A01CC; + font-weight: bold; +} + +/* Toggle button */ +a.json-toggle { + position: relative; + color: inherit; + text-decoration: none; +} +a.json-toggle:focus { + outline: none; +} +a.json-toggle:before { + color: #aaa; + content: "\25BC"; /* down arrow */ + position: absolute; + display: inline-block; + width: 1em; + left: -1em; +} +a.json-toggle.collapsed:before { + transform: rotate(-90deg); /* Use rotated down arrow, prevents right arrow appearing smaller than down arrow in some browsers */ + -ms-transform: rotate(-90deg); + -webkit-transform: rotate(-90deg); +} + +/* Collapsable placeholder links */ +a.json-placeholder { + color: #aaa; + padding: 0 1em; + text-decoration: none; +} +a.json-placeholder:hover { + text-decoration: underline; +} diff --git a/dmp-frontend/src/assets/jquery.json-viewer.js b/dmp-frontend/src/assets/jquery.json-viewer.js new file mode 100644 index 000000000..3ecbc3f7b --- /dev/null +++ b/dmp-frontend/src/assets/jquery.json-viewer.js @@ -0,0 +1,148 @@ +/** + * jQuery json-viewer + * @author: Alexandre Bodelot + */ +(function($){ + + /** + * Check if arg is either an array with at least 1 element, or a dict with at least 1 key + * @return boolean + */ + function isCollapsable(arg) { + return arg instanceof Object && Object.keys(arg).length > 0; + } + + /** + * Check if a string represents a valid url + * @return boolean + */ + function isUrl(string) { + var regexp = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; + return regexp.test(string); + } + + /** + * Transform a json object into html representation + * @return string + */ + function json2html(json, options) { + var html = ''; + if (typeof json === 'string') { + /* Escape tags */ + json = json.replace(/&/g, '&').replace(//g, '>'); + if (isUrl(json)) + html += '' + json + ''; + else + html += '"' + json + '"'; + } + else if (typeof json === 'number') { + html += '' + json + ''; + } + else if (typeof json === 'boolean') { + html += '' + json + ''; + } + else if (json === null) { + html += 'null'; + } + else if (json instanceof Array) { + if (json.length > 0) { + html += '[
    '; + for (var i = 0; i < json.length; ++i) { + html += '
  1. '; + /* Add toggle button if item is collapsable */ + if (isCollapsable(json[i])) { + html += ''; + } + html += json2html(json[i], options); + /* Add comma if item is not last */ + if (i < json.length - 1) { + html += ','; + } + html += '
  2. '; + } + html += '
]'; + } + else { + html += '[]'; + } + } + else if (typeof json === 'object') { + var key_count = Object.keys(json).length; + if (key_count > 0) { + html += '{
    '; + for (var key in json) { + if (json.hasOwnProperty(key)) { + html += '
  • '; + var keyRepr = options.withQuotes ? + '"' + key + '"' : key; + /* Add toggle button if item is collapsable */ + if (isCollapsable(json[key])) { + html += '' + keyRepr + ''; + } + else { + html += keyRepr; + } + html += ': ' + json2html(json[key], options); + /* Add comma if item is not last */ + if (--key_count > 0) + html += ','; + html += '
  • '; + } + } + html += '
}'; + } + else { + html += '{}'; + } + } + return html; + } + + /** + * jQuery plugin method + * @param json: a javascript object + * @param options: an optional options hash + */ + $.fn.jsonViewer = function(json, options) { + options = options || {}; + + /* jQuery chaining */ + return this.each(function() { + + /* Transform to HTML */ + var html = json2html(json, options); + if (isCollapsable(json)) + html = '' + html; + + /* Insert HTML in target DOM element */ + $(this).html(html); + + /* Bind click on toggle buttons */ + $(this).off('click'); + $(this).on('click', 'a.json-toggle', function() { + var target = $(this).toggleClass('collapsed').siblings('ul.json-dict, ol.json-array'); + target.toggle(); + if (target.is(':visible')) { + target.siblings('.json-placeholder').remove(); + } + else { + var count = target.children('li').length; + var placeholder = count + (count > 1 ? ' items' : ' item'); + target.after('' + placeholder + ''); + } + return false; + }); + + /* Simulate click on toggle button when placeholder is clicked */ + $(this).on('click', 'a.json-placeholder', function() { + $(this).siblings('a.json-toggle').click(); + return false; + }); + + if (options.collapsed == true) { + /* Trigger click to collapse all nodes */ + $(this).find('a.json-toggle').click(); + } + }); + }; +})(jQuery); diff --git a/dmp-frontend/src/assets/simple-sidebar.css b/dmp-frontend/src/assets/simple-sidebar.css new file mode 100644 index 000000000..390dc906b --- /dev/null +++ b/dmp-frontend/src/assets/simple-sidebar.css @@ -0,0 +1,122 @@ +/*! + * Start Bootstrap - Simple Sidebar (https://startbootstrap.com/template-overviews/simple-sidebar) + * Copyright 2013-2017 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-simple-sidebar/blob/master/LICENSE) + */ + +body { + overflow-x: hidden; +} + +#wrapper { + padding-left: 0; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +#wrapper.toggled { + padding-left: 250px; +} + +#sidebar-wrapper { + z-index: 1000; + position: fixed; + left: 250px; + width: 0; + height: 100%; + margin-left: -250px; + overflow-y: auto; + background: #000; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +#wrapper.toggled #sidebar-wrapper { + width: 250px; +} + +#page-content-wrapper { + width: 100%; + position: absolute; + padding: 15px; +} + +#wrapper.toggled #page-content-wrapper { + position: absolute; + margin-right: -250px; +} + + +/* Sidebar Styles */ + +.sidebar-nav { + position: absolute; + top: 0; + width: 250px; + margin: 0; + padding: 0; + list-style: none; +} + +.sidebar-nav li { + text-indent: 20px; + line-height: 40px; +} + +.sidebar-nav li a { + display: block; + text-decoration: none; + color: #999999; +} + +.sidebar-nav li a:hover { + text-decoration: none; + color: #fff; + background: rgba(255, 255, 255, 0.2); +} + +.sidebar-nav li a:active, .sidebar-nav li a:focus { + text-decoration: none; +} + +.sidebar-nav>.sidebar-brand { + height: 65px; + font-size: 18px; + line-height: 60px; +} + +.sidebar-nav>.sidebar-brand a { + color: #999999; +} + +.sidebar-nav>.sidebar-brand a:hover { + color: #fff; + background: none; +} + +@media(min-width:768px) { + #wrapper { + padding-left: 0; + } + #wrapper.toggled { + padding-left: 250px; + } + #sidebar-wrapper { + width: 0; + } + #wrapper.toggled #sidebar-wrapper { + width: 250px; + } + #page-content-wrapper { + padding: 20px; + position: relative; + } + #wrapper.toggled #page-content-wrapper { + position: relative; + margin-right: 0; + } +} diff --git a/dmp-frontend/src/assets/vkbeautify.0.99.00.js b/dmp-frontend/src/assets/vkbeautify.0.99.00.js new file mode 100644 index 000000000..57effaeca --- /dev/null +++ b/dmp-frontend/src/assets/vkbeautify.0.99.00.js @@ -0,0 +1,358 @@ +/** +* vkBeautify - javascript plugin to pretty-print or minify text in XML, JSON, CSS and SQL formats. +* +* Version - 0.99.00.beta +* Copyright (c) 2012 Vadim Kiryukhin +* vkiryukhin @ gmail.com +* http://www.eslinstructor.net/vkbeautify/ +* +* Dual licensed under the MIT and GPL licenses: +* http://www.opensource.org/licenses/mit-license.php +* http://www.gnu.org/licenses/gpl.html +* +* Pretty print +* +* vkbeautify.xml(text [,indent_pattern]); +* vkbeautify.json(text [,indent_pattern]); +* vkbeautify.css(text [,indent_pattern]); +* vkbeautify.sql(text [,indent_pattern]); +* +* @text - String; text to beatufy; +* @indent_pattern - Integer | String; +* Integer: number of white spaces; +* String: character string to visualize indentation ( can also be a set of white spaces ) +* Minify +* +* vkbeautify.xmlmin(text [,preserve_comments]); +* vkbeautify.jsonmin(text); +* vkbeautify.cssmin(text [,preserve_comments]); +* vkbeautify.sqlmin(text); +* +* @text - String; text to minify; +* @preserve_comments - Bool; [optional]; +* Set this flag to true to prevent removing comments from @text ( minxml and mincss functions only. ) +* +* Examples: +* vkbeautify.xml(text); // pretty print XML +* vkbeautify.json(text, 4 ); // pretty print JSON +* vkbeautify.css(text, '. . . .'); // pretty print CSS +* vkbeautify.sql(text, '----'); // pretty print SQL +* +* vkbeautify.xmlmin(text, true);// minify XML, preserve comments +* vkbeautify.jsonmin(text);// minify JSON +* vkbeautify.cssmin(text);// minify CSS, remove comments ( default ) +* vkbeautify.sqlmin(text);// minify SQL +* +*/ + +(function() { + +function createShiftArr(step) { + + var space = ' '; + + if ( isNaN(parseInt(step)) ) { // argument is string + space = step; + } else { // argument is integer + switch(step) { + case 1: space = ' '; break; + case 2: space = ' '; break; + case 3: space = ' '; break; + case 4: space = ' '; break; + case 5: space = ' '; break; + case 6: space = ' '; break; + case 7: space = ' '; break; + case 8: space = ' '; break; + case 9: space = ' '; break; + case 10: space = ' '; break; + case 11: space = ' '; break; + case 12: space = ' '; break; + } + } + + var shift = ['\n']; // array of shifts + for(ix=0;ix<100;ix++){ + shift.push(shift[ix]+space); + } + return shift; +} + +function vkbeautify(){ + this.step = ' '; // 4 spaces + this.shift = createShiftArr(this.step); +}; + +vkbeautify.prototype.xml = function(text,step) { + + var ar = text.replace(/>\s{0,}<") + .replace(/ or -1) { + str += shift[deep]+ar[ix]; + inComment = true; + // end comment or // + if(ar[ix].search(/-->/) > -1 || ar[ix].search(/\]>/) > -1 || ar[ix].search(/!DOCTYPE/) > -1 ) { + inComment = false; + } + } else + // end comment or // + if(ar[ix].search(/-->/) > -1 || ar[ix].search(/\]>/) > -1) { + str += ar[ix]; + inComment = false; + } else + // // + if( /^<\w/.exec(ar[ix-1]) && /^<\/\w/.exec(ar[ix]) && + /^<[\w:\-\.\,]+/.exec(ar[ix-1]) == /^<\/[\w:\-\.\,]+/.exec(ar[ix])[0].replace('/','')) { + str += ar[ix]; + if(!inComment) deep--; + } else + // // + if(ar[ix].search(/<\w/) > -1 && ar[ix].search(/<\//) == -1 && ar[ix].search(/\/>/) == -1 ) { + str = !inComment ? str += shift[deep++]+ar[ix] : str += ar[ix]; + } else + // ... // + if(ar[ix].search(/<\w/) > -1 && ar[ix].search(/<\//) > -1) { + str = !inComment ? str += shift[deep]+ar[ix] : str += ar[ix]; + } else + // // + if(ar[ix].search(/<\//) > -1) { + str = !inComment ? str += shift[--deep]+ar[ix] : str += ar[ix]; + } else + // // + if(ar[ix].search(/\/>/) > -1 ) { + str = !inComment ? str += shift[deep]+ar[ix] : str += ar[ix]; + } else + // // + if(ar[ix].search(/<\?/) > -1) { + str += shift[deep]+ar[ix]; + } else + // xmlns // + if( ar[ix].search(/xmlns\:/) > -1 || ar[ix].search(/xmlns\=/) > -1) { + str += shift[deep]+ar[ix]; + } + + else { + str += ar[ix]; + } + } + + return (str[0] == '\n') ? str.slice(1) : str; +} + +vkbeautify.prototype.json = function(text,step) { + + var step = step ? step : this.step; + + if (typeof JSON === 'undefined' ) return text; + + if ( typeof text === "string" ) return JSON.stringify(JSON.parse(text), null, step); + if ( typeof text === "object" ) return JSON.stringify(text, null, step); + + return text; // text is not string nor object +} + +vkbeautify.prototype.css = function(text, step) { + + var ar = text.replace(/\s{1,}/g,' ') + .replace(/\{/g,"{~::~") + .replace(/\}/g,"~::~}~::~") + .replace(/\;/g,";~::~") + .replace(/\/\*/g,"~::~/*") + .replace(/\*\//g,"*/~::~") + .replace(/~::~\s{0,}~::~/g,"~::~") + .split('~::~'), + len = ar.length, + deep = 0, + str = '', + ix = 0, + shift = step ? createShiftArr(step) : this.shift; + + for(ix=0;ix/g,"") + .replace(/[ \r\n\t]{1,}xmlns/g, ' xmlns'); + return str.replace(/>\s{0,}<"); +} + +vkbeautify.prototype.jsonmin = function(text) { + + if (typeof JSON === 'undefined' ) return text; + + return JSON.stringify(JSON.parse(text), null, 0); + +} + +vkbeautify.prototype.cssmin = function(text, preserveComments) { + + var str = preserveComments ? text + : text.replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\//g,"") ; + + return str.replace(/\s{1,}/g,' ') + .replace(/\{\s{1,}/g,"{") + .replace(/\}\s{1,}/g,"}") + .replace(/\;\s{1,}/g,";") + .replace(/\/\*\s{1,}/g,"/*") + .replace(/\*\/\s{1,}/g,"*/"); +} + +vkbeautify.prototype.sqlmin = function(text) { + return text.replace(/\s{1,}/g," ").replace(/\s{1,}\(/,"(").replace(/\s{1,}\)/,")"); +} + +window.vkbeautify = new vkbeautify(); + +})(); + diff --git a/dmp-frontend/src/index.html b/dmp-frontend/src/index.html index 374d0f02d..c01e0f2ae 100644 --- a/dmp-frontend/src/index.html +++ b/dmp-frontend/src/index.html @@ -1,22 +1,49 @@ - + + + + + Digital Management Plans Creator APP + + + + - - - - - - - - Data Management Plans - Manager - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -31,15 +58,7 @@   } -
-
-

Data Management Plan

-
-
- - -
-
- + + diff --git a/dmp-frontend/src/styles.css b/dmp-frontend/src/styles.css index 272697696..76065f8d8 100644 --- a/dmp-frontend/src/styles.css +++ b/dmp-frontend/src/styles.css @@ -1,11 +1,11 @@ /* You can add global styles to this file, and also import other style files */ - +/* body { padding-top: 40px; padding-bottom: 40px; background-color: #eee; } - + */ .form-signin { max-width: 330px; padding: 15px; From 775e8f0d31b6971812da01e08bb750df20e18e78 Mon Sep 17 00:00:00 2001 From: Nikolaos Laskaris Date: Wed, 1 Nov 2017 19:23:00 +0200 Subject: [PATCH 2/2] - --- .../src/app/login-OLD/login-page.html | 55 ------------ dmp-frontend/src/app/login-OLD/login-page.ts | 87 ------------------- 2 files changed, 142 deletions(-) delete mode 100644 dmp-frontend/src/app/login-OLD/login-page.html delete mode 100644 dmp-frontend/src/app/login-OLD/login-page.ts diff --git a/dmp-frontend/src/app/login-OLD/login-page.html b/dmp-frontend/src/app/login-OLD/login-page.html deleted file mode 100644 index 56caf9983..000000000 --- a/dmp-frontend/src/app/login-OLD/login-page.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - -
- - - - - -
- - - - - - - - - - - \ No newline at end of file diff --git a/dmp-frontend/src/app/login-OLD/login-page.ts b/dmp-frontend/src/app/login-OLD/login-page.ts deleted file mode 100644 index 169a15775..000000000 --- a/dmp-frontend/src/app/login-OLD/login-page.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { Component, OnInit, NgZone, AfterViewInit, ElementRef } from '@angular/core'; -import { GoogleSignInSuccess } from 'angular-google-signin'; -import { Router, ActivatedRoute } from '@angular/router'; -import { TokenService, TokenProvider } from '../services/login/token.service'; - -@Component({ - selector: 'login-page', - templateUrl: './login-page.html', - providers: [] -}) -export class LoginComponent implements OnInit, AfterViewInit { - returnUrl: string; - token: any; - - constructor( - private route: ActivatedRoute, - private router: Router, - private ngZone: NgZone, - private tokenService: TokenService, - private element: ElementRef - ) { - - } - - ngOnInit() { - // reset login status - //this.authenticationService.logout(); - - // get return url from route parameters or default to '/' - - //this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/'; - } - //private myClientId: string = '524432312250-vhgidft856v8qftsc81kls4c74v87d8o.apps.googleusercontent.com'; - private myClientId: string = '1010962018903-glegmqudqtl1lub0150vacopbu06lgsg.apps.googleusercontent.com'; - - public auth2: any; - - private scope = [ - 'profile', - 'email' - ].join(' '); - - public googleInit() { - - gapi.load('auth2', () => { - this.auth2 = gapi.auth2.init({ - client_id: this.myClientId, - cookie_policy: 'single_host_origin', - scope: this.scope - }); - var buttonElement = this.element.nativeElement.querySelector('#googleBtn'); - this.attachSignin(buttonElement); - }); - } - - public attachSignin(element) { - this.auth2.attachClickHandler(element, {}, - (googleUser) => { - this.token = googleUser.getAuthResponse().id_token; - - let profile = googleUser.getBasicProfile(); - - this.tokenService.setLoggedIn(true); - this.tokenService.setToken(this.token); - this.tokenService.setProvider(TokenProvider.google); - this.tokenService.setUsername(profile.getName()); - this.tokenService.setEmail(profile.getEmail()); - - this.ngZone.run(() => this.router.navigateByUrl('tabs')); - - window.location.reload(); - - }, function (error) { - console.log(JSON.stringify(error, undefined, 2)); - }); - - - - } - - ngAfterViewInit() { - this.googleInit(); - } - - - -}