@microsoft/teams-ai
Version:
SDK focused on building AI based applications for Microsoft Teams.
106 lines • 4.47 kB
JavaScript
;
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.OAuthAdaptiveCardAuthentication = void 0;
const AdaptiveCardAuthenticationBase_1 = require("./AdaptiveCardAuthenticationBase");
const Authentication_1 = require("./Authentication");
const UserTokenAccess = __importStar(require("./UserTokenAccess"));
/**
* @internal
*
* Handles authentication for Adaptive Cards in Teams.
*/
class OAuthAdaptiveCardAuthentication extends AdaptiveCardAuthenticationBase_1.AdaptiveCardAuthenticationBase {
settings;
/**
* Creates a new instance of OAuthAdaptiveCardAuthentication.
* @param {OAuthSettings} settings The OAuthSettings.
*/
constructor(settings) {
super();
this.settings = settings;
}
/**
* Handles the SSO token exchange.
* @param {TurnContext} context The turn context.
* @returns {Promise<TokenResponse | undefined>} A promise that resolves to the token response or undefined if token exchange failed.
*/
async handleSsoTokenExchange(context) {
const tokenExchangeRequest = context.activity.value.authentication;
if (!tokenExchangeRequest || !tokenExchangeRequest.token) {
return;
}
return await UserTokenAccess.exchangeToken(context, this.settings, tokenExchangeRequest);
}
/**
* Handles the signin/verifyState activity.
* @param {TurnContext} context The turn context.
* @param {string} magicCode The magic code from sign-in.
* @returns {Promise<TokenResponse | undefined>} A promise that resolves to undefined. The parent class will trigger silentAuth again.
*/
async handleUserSignIn(context, magicCode) {
return await UserTokenAccess.getUserToken(context, this.settings, magicCode);
}
/**
* Gets the sign-in link for the user.
* @param {TurnContext} context The turn context.
* @returns {Promise<TokenResponse | undefined>} A promise that resolves to the sign-in link or undefined if no sign-in link available.
*/
async getLoginRequest(context) {
const signInResource = await UserTokenAccess.getSignInResource(context, this.settings);
const signInLink = signInResource.signInLink;
if (!signInLink) {
throw new Authentication_1.AuthError('OAuthPrompt Authentication failed. No signin link found.');
}
const response = {
statusCode: 401,
type: 'application/vnd.microsoft.activity.loginRequest',
value: {
text: this.settings.title,
connectionName: this.settings.connectionName,
buttons: [
{
title: 'Sign-In',
text: 'Sign-In',
type: 'signin',
value: signInLink
}
]
}
};
if (this.settings.tokenExchangeUri && this.settings.enableSso == true) {
const botId = context.activity.recipient.id;
response.value.tokenExchangeResource = {
id: botId,
uri: this.settings.tokenExchangeUri
};
}
return response;
}
}
exports.OAuthAdaptiveCardAuthentication = OAuthAdaptiveCardAuthentication;
//# sourceMappingURL=OAuthAdaptiveCardAuthentication.js.map