/** * ------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. * See License in the project root for license information. * ------------------------------------------------------------------------------------------- */ import { AuthenticationProviderOptions } from '@microsoft/microsoft-graph-client'; import { createFromProvider } from '../Graph'; import { IProvider } from './IProvider'; /** * Facilitates create of new custom provider * * @export * @class SimpleProvider * @extends {IProvider} */ export class SimpleProvider extends IProvider { private readonly _getAccessTokenHandler: (scopes: string[]) => Promise; private readonly _loginHandler: () => Promise; private readonly _logoutHandler: () => Promise; /** * Name used for analytics * * @readonly * @memberof IProvider */ public get name() { return 'MgtSimpleProvider'; } constructor( getAccessTokenHandler: (scopes: string[]) => Promise, loginHandler?: () => Promise, logoutHandler?: () => Promise ) { super(); this._getAccessTokenHandler = getAccessTokenHandler; this._loginHandler = loginHandler; this._logoutHandler = logoutHandler; this.graph = createFromProvider(this); } /** * Invokes the getAccessToken function * * @param {AuthenticationProviderOptions} [options] * @returns {Promise} * @memberof SimpleProvider */ public getAccessToken(options?: AuthenticationProviderOptions): Promise { return this._getAccessTokenHandler(options?.scopes); } /** * Invokes login function * * @returns {Promise} * @memberof SimpleProvider */ public login(): Promise { return this._loginHandler(); } /** * Invokes logout function * * @returns {Promise} * @memberof SimpleProvider */ public logout(): Promise { return this._logoutHandler(); } }