Browse Source

dd grant function on AuthService

pull/15788/head
Mahmut Gundogdu 3 years ago
parent
commit
bfe811c407
  1. 11
      npm/ng-packs/packages/core/src/lib/abstracts/abstract.model.ts
  2. 23
      npm/ng-packs/packages/core/src/lib/abstracts/auth.service.ts
  3. 1
      npm/ng-packs/packages/core/src/lib/abstracts/index.ts
  4. 43
      npm/ng-packs/packages/oauth/src/lib/services/oauth.service.ts

11
npm/ng-packs/packages/core/src/lib/abstracts/abstract.model.ts

@ -0,0 +1,11 @@
export interface AbstractModel {
access_token: string;
id_token: string;
token_type: string;
expires_in: number;
refresh_token: string;
scope: string;
state?: string;
tenant_domain?:string
}

23
npm/ng-packs/packages/core/src/lib/abstracts/auth.service.ts

@ -1,7 +1,9 @@
import { Injectable } from '@angular/core';
import { Params } from '@angular/router';
import { Observable, of } from 'rxjs';
import { LoginParams } from '../models/auth';
import {HttpHeaders} from '@angular/common/http';
import {Injectable} from '@angular/core';
import {Params} from '@angular/router';
import {Observable, of} from 'rxjs';
import {LoginParams} from '../models/auth';
import {AbstractModel} from "./abstract.model";
/**
* Abstract service for Authentication.
@ -10,7 +12,8 @@ import { LoginParams } from '../models/auth';
providedIn: 'root',
})
export class AuthService implements IAuthService {
constructor() {}
constructor() {
}
private warningMessage() {
console.error('You should add @abp/ng-oauth packages or create your own auth packages.');
@ -31,7 +34,8 @@ export class AuthService implements IAuthService {
return of(undefined);
}
navigateToLogin(queryParams?: Params): void {}
navigateToLogin(queryParams?: Params): void {
}
get isInternalAuth() {
throw new Error('not implemented');
@ -42,6 +46,11 @@ export class AuthService implements IAuthService {
this.warningMessage();
return false;
}
loginUsingGrant(grantType: string, parameters: object, headers?: HttpHeaders): Promise<AbstractModel> {
console.log({grantType, parameters, headers})
return Promise.reject(new Error('not implemented'));
}
}
export interface IAuthService {
@ -56,4 +65,6 @@ export interface IAuthService {
navigateToLogin(queryParams?: Params): void;
login(params: LoginParams): Observable<any>;
loginUsingGrant(grantType: string, parameters: object, headers?: HttpHeaders): Promise<AbstractModel>;
}

1
npm/ng-packs/packages/core/src/lib/abstracts/index.ts

@ -1,3 +1,4 @@
export * from './ng-model.component';
export * from './auth.guard';
export * from './auth.service';
export * from './abstract.model'

43
npm/ng-packs/packages/oauth/src/lib/services/oauth.service.ts

@ -1,24 +1,27 @@
import { Injectable, Injector } from '@angular/core';
import { Params } from '@angular/router';
import { from, Observable, lastValueFrom } from 'rxjs';
import { filter, map, switchMap, take, tap } from 'rxjs/operators';
import { IAuthService, LoginParams } from '@abp/ng.core';
import { AuthFlowStrategy } from '../strategies';
import { EnvironmentService } from '@abp/ng.core';
import { AUTH_FLOW_STRATEGY } from '../tokens/auth-flow-strategy';
import { AuthConfig, OAuthService } from "angular-oauth2-oidc";
import {Injectable, Injector} from '@angular/core';
import {Params} from '@angular/router';
import {from, Observable, lastValueFrom} from 'rxjs';
import {filter, map, switchMap, take, tap} from 'rxjs/operators';
import { AbstractModel, IAuthService, LoginParams} from '@abp/ng.core';
import {AuthFlowStrategy} from '../strategies';
import {EnvironmentService} from '@abp/ng.core';
import {AUTH_FLOW_STRATEGY} from '../tokens/auth-flow-strategy';
import {OAuthService} from "angular-oauth2-oidc";
import {HttpHeaders} from '@angular/common/http';
@Injectable({
providedIn: 'root',
})
export class AbpOAuthService implements IAuthService {
private strategy!: AuthFlowStrategy;
private oAuthService: OAuthService;
get isInternalAuth() {
return this.strategy.isInternalAuth;
}
constructor(protected injector: Injector, private oAuthService: OAuthService) {}
constructor(protected injector: Injector,) {
this.oAuthService = this.injector.get(OAuthService)
}
async init() {
const environmentService = this.injector.get(EnvironmentService);
@ -54,4 +57,22 @@ export class AbpOAuthService implements IAuthService {
get isAuthenticated(): boolean {
return this.oAuthService.hasValidAccessToken();
}
loginUsingGrant(grantType: string, parameters: object, headers?: HttpHeaders): Promise<AbstractModel> {
const {clientId: client_id, dummyClientSecret: client_secret} = this.oAuthService;
const access_token = this.oAuthService.getAccessToken()
const p = {
access_token,
grant_type: grantType,
client_id,
...parameters
};
if (client_secret) {
p['client_secret'] = client_secret;
}
return this.oAuthService.fetchTokenUsingGrant(grantType, p, headers)
}
}

Loading…
Cancel
Save