Browse Source

existing code tested and reviewed by me

pull/18768/head
Sinan Öztürk 3 years ago
parent
commit
1d659c5cbe
  1. 2
      npm/ng-packs/apps/dev-app/src/environments/environment.ts
  2. 39
      npm/ng-packs/packages/oauth/src/lib/strategies/auth-code-flow-strategy.ts
  3. 6
      npm/ng-packs/packages/oauth/src/lib/strategies/auth-password-flow-strategy.ts
  4. 8
      npm/ng-packs/packages/oauth/src/lib/utils/auth-utils.ts

2
npm/ng-packs/apps/dev-app/src/environments/environment.ts

@ -14,7 +14,7 @@ export const environment = {
issuer: 'https://localhost:44305/', issuer: 'https://localhost:44305/',
clientId: 'MyProjectName_App', clientId: 'MyProjectName_App',
scope: 'offline_access MyProjectName', scope: 'offline_access MyProjectName',
// responseType: 'code', responseType: 'code',
redirectUri: baseUrl, redirectUri: baseUrl,
}, },
apis: { apis: {

39
npm/ng-packs/packages/oauth/src/lib/strategies/auth-code-flow-strategy.ts

@ -1,10 +1,10 @@
import { noop } from '@abp/ng.core'; import { noop } from '@abp/ng.core';
import { Params } from '@angular/router'; import { Params } from '@angular/router';
import { filter, from, of } from 'rxjs'; import { from, of } from 'rxjs';
import { AuthFlowStrategy } from './auth-flow-strategy'; import { AuthFlowStrategy } from './auth-flow-strategy';
import { getRememberMe, removeRememberMe, setRememberMe } from '../utils'; import { getRememberMe, removeRememberMe, setRememberMe } from '../utils';
export class AuthCodeFlowStrategy extends AuthFlowStrategy{ export class AuthCodeFlowStrategy extends AuthFlowStrategy {
readonly isInternalAuth = false; readonly isInternalAuth = false;
private remember_me = 'remember_me' private remember_me = 'remember_me'
@ -15,32 +15,8 @@ export class AuthCodeFlowStrategy extends AuthFlowStrategy{
.init() .init()
.then(() => this.oAuthService.tryLogin().catch(noop)) .then(() => this.oAuthService.tryLogin().catch(noop))
.then(() => this.oAuthService.setupAutomaticSilentRefresh()) .then(() => this.oAuthService.setupAutomaticSilentRefresh())
// .then(() => this.listenToTokenExpiration());
} }
// private listenToTokenExpiration() {
// this.oAuthService.events
// .pipe(
// filter(
// event => {
// return event instanceof OAuthInfoEvent &&
// event.type === 'token_expires' &&
// event.info === 'access_token'
// }
// ),
// )
// .subscribe(() => {
// if (this.oAuthService.getRefreshToken()) {
// console.log('refresh token');
// this.refreshToken();
// } else {
// this.oAuthService.logOut();
// removeRememberMe(this.localStorageService);
// this.configState.refreshAppState().subscribe();
// }
// });
// }
private checkRememberMeOption() { private checkRememberMeOption() {
const accessToken = this.oAuthService.getAccessToken(); const accessToken = this.oAuthService.getAccessToken();
const expireDate = this.oAuthService.getAccessTokenExpiration(); const expireDate = this.oAuthService.getAccessTokenExpiration();
@ -49,22 +25,19 @@ export class AuthCodeFlowStrategy extends AuthFlowStrategy{
if (accessToken && rememberMe === null) { if (accessToken && rememberMe === null) {
let parsedToken = JSON.parse(atob(accessToken.split(".")[1])); let parsedToken = JSON.parse(atob(accessToken.split(".")[1]));
let rememberMeValue = parsedToken[this.remember_me];
if (parsedToken[this.remember_me]) { if (rememberMeValue && (rememberMeValue === 'True' || rememberMeValue === 'true')) {
setRememberMe(true, this.localStorageService); setRememberMe(true, this.localStorageService);
} else { } else {
setRememberMe(false, this.localStorageService) setRememberMe(false, this.localStorageService)
} }
} }
rememberMe = getRememberMe(this.localStorageService);
if (accessToken && expireDate < currentDate && rememberMe === 'false') { rememberMe = getRememberMe(this.localStorageService);
if (accessToken && expireDate < currentDate && rememberMe !== 'true') {
removeRememberMe(this.localStorageService); removeRememberMe(this.localStorageService);
this.oAuthService.logOut(); this.oAuthService.logOut();
}else{
console.log('try login');
this.oAuthService.tryLogin().catch(noop)
} }
} }

6
npm/ng-packs/packages/oauth/src/lib/strategies/auth-password-flow-strategy.ts

@ -45,9 +45,9 @@ export class AuthPasswordFlowStrategy extends AuthFlowStrategy {
const accessToken = this.oAuthService.getAccessToken(); const accessToken = this.oAuthService.getAccessToken();
const expireDate = this.oAuthService.getAccessTokenExpiration(); const expireDate = this.oAuthService.getAccessTokenExpiration();
const currentDate = new Date().getTime(); const currentDate = new Date().getTime();
const rememberMe = getRememberMe(localStorageService) === 'true'; const rememberMe = getRememberMe(localStorageService);
if (accessToken && expireDate < currentDate && !rememberMe) { if (accessToken && expireDate < currentDate && rememberMe !== 'true') {
removeRememberMe(this.localStorageService); removeRememberMe(this.localStorageService);
this.oAuthService.logOut(); this.oAuthService.logOut();
} }
@ -73,6 +73,7 @@ export class AuthPasswordFlowStrategy extends AuthFlowStrategy {
), ),
).pipe(pipeToLogin(params, this.injector)); ).pipe(pipeToLogin(params, this.injector));
} }
logout() { logout() {
const router = this.injector.get(Router); const router = this.injector.get(Router);
const noRedirectToLogoutUrl = true; const noRedirectToLogoutUrl = true;
@ -86,7 +87,6 @@ export class AuthPasswordFlowStrategy extends AuthFlowStrategy {
} }
protected refreshToken() { protected refreshToken() {
console.log('token refreshed');
return this.oAuthService.refreshToken().catch(() => { return this.oAuthService.refreshToken().catch(() => {
clearOAuthStorage(); clearOAuthStorage();
removeRememberMe(this.localStorageService); removeRememberMe(this.localStorageService);

8
npm/ng-packs/packages/oauth/src/lib/utils/auth-utils.ts

@ -9,8 +9,6 @@ import {
AbpLocalStorageService, AbpLocalStorageService,
} from '@abp/ng.core'; } from '@abp/ng.core';
const cookieKey = 'rememberMe';
const storageKey = 'passwordFlow';
const remember_me = 'remember_me'; const remember_me = 'remember_me';
export const pipeToLogin: PipeToLoginFn = function ( export const pipeToLogin: PipeToLoginFn = function (
@ -30,18 +28,16 @@ export const pipeToLogin: PipeToLoginFn = function (
}; };
export function setRememberMe( export function setRememberMe(
remember: boolean | undefined, remember: boolean,
localStorageService: AbpLocalStorageService, localStorageService: AbpLocalStorageService,
) { ) {
console.log('set Remember Me');
localStorageService.setItem(remember_me, JSON.stringify(remember)); localStorageService.setItem(remember_me, JSON.stringify(remember));
} }
export function removeRememberMe(localStorageService: AbpLocalStorageService) { export function removeRememberMe(localStorageService: AbpLocalStorageService) {
console.log('remove remember Me');
localStorageService.removeItem(remember_me); localStorageService.removeItem(remember_me);
} }
export function getRememberMe(localStorageService: AbpLocalStorageService){ export function getRememberMe(localStorageService: AbpLocalStorageService){
return localStorageService.getItem(remember_me); return localStorageService.getItem(remember_me);
} }
Loading…
Cancel
Save