mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-21 17:12:43 +00:00
@@ -1,9 +1,10 @@
|
|||||||
import {Component, OnInit, OnDestroy} from '@angular/core';
|
import {Component, OnInit, OnDestroy} from '@angular/core';
|
||||||
import {NavController} from '@ionic/angular';
|
import {NavController} from '@ionic/angular';
|
||||||
import {Router} from '@angular/router';
|
import {Router} from '@angular/router';
|
||||||
import {IAuthAction} from 'ionic-appauth';
|
import {AuthActions, IAuthAction} from 'ionic-appauth';
|
||||||
import {Subscription} from 'rxjs';
|
import {Subscription} from 'rxjs';
|
||||||
import {DefaultAuthService} from '../../default-auth.service';
|
import {DefaultAuthService} from '../../default-auth.service';
|
||||||
|
import {AuthHelperService} from '../../auth-helper.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'auth-callback',
|
selector: 'auth-callback',
|
||||||
@@ -17,6 +18,7 @@ export class AuthCallbackPageComponent implements OnInit, OnDestroy {
|
|||||||
private auth: DefaultAuthService,
|
private auth: DefaultAuthService,
|
||||||
private navCtrl: NavController,
|
private navCtrl: NavController,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
|
private authHelper: AuthHelperService,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@@ -28,7 +30,14 @@ export class AuthCallbackPageComponent implements OnInit, OnDestroy {
|
|||||||
this.sub.unsubscribe();
|
this.sub.unsubscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
async postCallback(_action: IAuthAction) {
|
async postCallback(action: IAuthAction) {
|
||||||
await this.navCtrl.navigateRoot('profile');
|
if (action.action === AuthActions.SignInSuccess) {
|
||||||
|
const originPath = await this.authHelper.getOriginPath();
|
||||||
|
this.navCtrl.navigateRoot(originPath ?? 'profile');
|
||||||
|
this.authHelper.deleteOriginPath();
|
||||||
|
}
|
||||||
|
if (action.action === AuthActions.SignInFailed) {
|
||||||
|
this.navCtrl.navigateRoot('profile');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
import {Injectable} from '@angular/core';
|
import {Injectable} from '@angular/core';
|
||||||
import {CanActivate, Router, RouterStateSnapshot} from '@angular/router';
|
import {
|
||||||
|
CanActivate,
|
||||||
|
NavigationExtras,
|
||||||
|
Router,
|
||||||
|
RouterStateSnapshot,
|
||||||
|
} from '@angular/router';
|
||||||
import {DefaultAuthService} from './default-auth.service';
|
import {DefaultAuthService} from './default-auth.service';
|
||||||
import {PAIAAuthService} from './paia/paia-auth.service';
|
import {PAIAAuthService} from './paia/paia-auth.service';
|
||||||
import {IAuthService} from 'ionic-appauth';
|
import {IAuthService} from 'ionic-appauth';
|
||||||
@@ -33,7 +38,14 @@ export class AuthGuardService implements CanActivate {
|
|||||||
try {
|
try {
|
||||||
await this.authService.getValidToken();
|
await this.authService.getValidToken();
|
||||||
} catch {
|
} catch {
|
||||||
this.router.navigate(['profile']);
|
const originNavigation = this.router.getCurrentNavigation();
|
||||||
|
let extras: NavigationExtras = {};
|
||||||
|
if (originNavigation) {
|
||||||
|
const url = originNavigation.extractedUrl.toString();
|
||||||
|
extras = {queryParams: {origin_path: url}};
|
||||||
|
}
|
||||||
|
this.router.navigate(['profile'], extras);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import {
|
|||||||
SCUserConfigurationMap,
|
SCUserConfigurationMap,
|
||||||
} from '@openstapps/core';
|
} from '@openstapps/core';
|
||||||
import {ConfigProvider} from '../config/config.provider';
|
import {ConfigProvider} from '../config/config.provider';
|
||||||
|
import {StorageProvider} from '../storage/storage.provider';
|
||||||
|
const AUTH_ORIGIN_PATH = 'stapps.auth.origin_path';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
@@ -21,6 +23,7 @@ export class AuthHelperService {
|
|||||||
constructor(
|
constructor(
|
||||||
private translateService: TranslateService,
|
private translateService: TranslateService,
|
||||||
private configProvider: ConfigProvider,
|
private configProvider: ConfigProvider,
|
||||||
|
private storageProvider: StorageProvider,
|
||||||
) {
|
) {
|
||||||
this.userConfigurationMap = (
|
this.userConfigurationMap = (
|
||||||
this.configProvider.getAnyValue('auth') as {
|
this.configProvider.getAnyValue('auth') as {
|
||||||
@@ -62,4 +65,22 @@ export class AuthHelperService {
|
|||||||
|
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async deleteOriginPath() {
|
||||||
|
return this.storageProvider.delete(AUTH_ORIGIN_PATH);
|
||||||
|
}
|
||||||
|
|
||||||
|
async setOriginPath(path: string) {
|
||||||
|
return this.storageProvider.put<string>(AUTH_ORIGIN_PATH, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
async getOriginPath() {
|
||||||
|
let originPath: string;
|
||||||
|
try {
|
||||||
|
originPath = await this.storageProvider.get<string>(AUTH_ORIGIN_PATH);
|
||||||
|
} catch {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return originPath;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
import {Component, OnInit, OnDestroy} from '@angular/core';
|
import {Component, OnInit, OnDestroy} from '@angular/core';
|
||||||
import {NavController} from '@ionic/angular';
|
import {NavController} from '@ionic/angular';
|
||||||
import {Router} from '@angular/router';
|
import {Router} from '@angular/router';
|
||||||
import {IAuthAction} from 'ionic-appauth';
|
import {AuthActions, IAuthAction} from 'ionic-appauth';
|
||||||
import {Subscription} from 'rxjs';
|
import {Subscription} from 'rxjs';
|
||||||
import {PAIAAuthService} from '../../paia-auth.service';
|
import {PAIAAuthService} from '../../paia-auth.service';
|
||||||
|
import {AuthHelperService} from '../../../auth-helper.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'auth-callback',
|
selector: 'auth-callback',
|
||||||
@@ -17,6 +18,7 @@ export class PAIAAuthCallbackPageComponent implements OnInit, OnDestroy {
|
|||||||
private auth: PAIAAuthService,
|
private auth: PAIAAuthService,
|
||||||
private navCtrl: NavController,
|
private navCtrl: NavController,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
|
private authHelper: AuthHelperService,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@@ -28,7 +30,14 @@ export class PAIAAuthCallbackPageComponent implements OnInit, OnDestroy {
|
|||||||
this.sub.unsubscribe();
|
this.sub.unsubscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
async postCallback(_action: IAuthAction) {
|
async postCallback(action: IAuthAction) {
|
||||||
this.navCtrl.navigateRoot('profile');
|
if (action.action === AuthActions.SignInSuccess) {
|
||||||
|
const originPath = await this.authHelper.getOriginPath();
|
||||||
|
this.navCtrl.navigateRoot(originPath ?? 'profile');
|
||||||
|
this.authHelper.deleteOriginPath();
|
||||||
|
}
|
||||||
|
if (action.action === AuthActions.SignInFailed) {
|
||||||
|
this.navCtrl.navigateRoot('profile');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import {
|
|||||||
SCAuthorizationProviderType,
|
SCAuthorizationProviderType,
|
||||||
SCUserConfiguration,
|
SCUserConfiguration,
|
||||||
} from '@openstapps/core';
|
} from '@openstapps/core';
|
||||||
|
import {ActivatedRoute} from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-home',
|
selector: 'app-home',
|
||||||
@@ -36,6 +37,8 @@ export class ProfilePageComponent implements OnInit, OnDestroy {
|
|||||||
paia: {loggedIn: false},
|
paia: {loggedIn: false},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
originPath: string | null;
|
||||||
|
|
||||||
userInfo?: SCUserConfiguration;
|
userInfo?: SCUserConfiguration;
|
||||||
|
|
||||||
subscriptions: Subscription[] = [];
|
subscriptions: Subscription[] = [];
|
||||||
@@ -44,7 +47,8 @@ export class ProfilePageComponent implements OnInit, OnDestroy {
|
|||||||
private defaultAuth: DefaultAuthService,
|
private defaultAuth: DefaultAuthService,
|
||||||
private paiaAuth: PAIAAuthService,
|
private paiaAuth: PAIAAuthService,
|
||||||
private requestor: Requestor,
|
private requestor: Requestor,
|
||||||
private authHelperService: AuthHelperService,
|
private authHelper: AuthHelperService,
|
||||||
|
private route: ActivatedRoute,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@@ -70,6 +74,9 @@ export class ProfilePageComponent implements OnInit, OnDestroy {
|
|||||||
this.data.paia.loggedIn = false;
|
this.data.paia.loggedIn = false;
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
this.route.queryParamMap.subscribe(queryParams => {
|
||||||
|
this.originPath = queryParams.get('origin_path');
|
||||||
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,15 +86,17 @@ export class ProfilePageComponent implements OnInit, OnDestroy {
|
|||||||
userInfoHandler
|
userInfoHandler
|
||||||
.performUserInfoRequest(this.defaultAuth.localConfiguration, token)
|
.performUserInfoRequest(this.defaultAuth.localConfiguration, token)
|
||||||
.then(userInfo => {
|
.then(userInfo => {
|
||||||
this.userInfo = this.authHelperService.getUserFromUserInfo(userInfo);
|
this.userInfo = this.authHelper.getUserFromUserInfo(userInfo);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public signIn() {
|
async signIn() {
|
||||||
|
await this.handleOriginPath();
|
||||||
this.defaultAuth.signIn();
|
this.defaultAuth.signIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
signInPAIA() {
|
async signInPAIA() {
|
||||||
|
await this.handleOriginPath();
|
||||||
this.paiaAuth.signIn();
|
this.paiaAuth.signIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,4 +114,10 @@ export class ProfilePageComponent implements OnInit, OnDestroy {
|
|||||||
subscription.unsubscribe();
|
subscription.unsubscribe();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async handleOriginPath() {
|
||||||
|
this.originPath
|
||||||
|
? await this.authHelper.setOriginPath(this.originPath)
|
||||||
|
: await this.authHelper.deleteOriginPath();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user