sp-dev-fx-webparts/samples/react-bot-framework-sso/bot/dialogs/logoutDialog.js

43 lines
1.6 KiB
JavaScript

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
const { ActivityTypes } = require('botbuilder');
const { ComponentDialog } = require('botbuilder-dialogs');
class LogoutDialog extends ComponentDialog {
async onBeginDialog(innerDc, options) {
const result = await this.interrupt(innerDc);
if (result) {
return result;
}
return await super.onBeginDialog(innerDc, options);
}
async onContinueDialog(innerDc) {
const result = await this.interrupt(innerDc);
if (result) {
return result;
}
return await super.onContinueDialog(innerDc);
}
async interrupt(innerDc) {
if (innerDc.context.activity.type === ActivityTypes.Message) {
const text = innerDc.context.activity.text ? innerDc.context.activity.text.toLowerCase() : '';
if (text === 'logout') {
// When the user sends the 'logout' command to the bot, we are going to send a 'oauth/signout'
// to the client application which will prompt the app to log the user out and send a 'oauth/signout'
// to the bot. When the bot receives the 'oauth/signout' event it will log the user out from the onEvent
// handler
await innerDc.context.sendActivity({ type: 'event', name: 'oauth/signout' });
await innerDc.context.adapter.signOutUser(innerDc.context, process.env.ConnectionName);
await innerDc.context.sendActivity('You have been signed out.');
}
}
}
}
module.exports.LogoutDialog = LogoutDialog;