microsoft/teams.net

Public

mirrored fromhttps://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
samples/migration-bot

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Apps/Activities/Invokes/SignIn/FailureActivity.cs

124lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Api.Activities;
5using Microsoft.Teams.Api.Activities.Invokes;
6using Microsoft.Teams.Apps.Routing;
7
8namespace Microsoft.Teams.Apps.Activities.Invokes;
9
10/// <summary>
11/// Attribute for handling signin/failure invoke activities sent when SSO token exchange fails.
12/// </summary>
13[AttributeUsage(AttributeTargets.Method, Inherited = true)]
14public class FailureAttribute() : InvokeAttribute(Api.Activities.Invokes.Name.SignIn.Failure, typeof(SignIn.FailureActivity))
15{
16 public override object Coerce(IContext<IActivity> context) => context.ToActivityType<SignIn.FailureActivity>();
17}
18
19public static partial class AppInvokeActivityExtensions
20{
21 /// <summary>
22 /// Registers a handler for signin/failure invoke activities sent when SSO token exchange fails.
23 /// </summary>
24 public static App OnSignInFailure(this App app, Func<IContext<SignIn.FailureActivity>, Task> handler)
25 {
26 app.Router.Register(new Route()
27 {
28 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.Failure]),
29 Type = app.Status is null ? RouteType.System : RouteType.User,
30 Handler = async context =>
31 {
32 await handler(context.ToActivityType<SignIn.FailureActivity>());
33 return null;
34 },
35 Selector = activity => activity is SignIn.FailureActivity
36 });
37
38 return app;
39 }
40
41 /// <summary>
42 /// Registers a handler for signin/failure invoke activities sent when SSO token exchange fails.
43 /// </summary>
44 public static App OnSignInFailure(this App app, Func<IContext<SignIn.FailureActivity>, Task<object?>> handler)
45 {
46 app.Router.Register(new Route()
47 {
48 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.Failure]),
49 Type = app.Status is null ? RouteType.System : RouteType.User,
50 Handler = context => handler(context.ToActivityType<SignIn.FailureActivity>()),
51 Selector = activity => activity is SignIn.FailureActivity
52 });
53
54 return app;
55 }
56
57 /// <summary>
58 /// Registers a handler for signin/failure invoke activities sent when SSO token exchange fails.
59 /// </summary>
60 public static App OnSignInFailure(this App app, Func<IContext<SignIn.FailureActivity>, Task<Response?>> handler)
61 {
62 app.Router.Register(new Route()
63 {
64 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.Failure]),
65 Type = app.Status is null ? RouteType.System : RouteType.User,
66 Handler = async context => await handler(context.ToActivityType<SignIn.FailureActivity>()),
67 Selector = activity => activity is SignIn.FailureActivity
68 });
69
70 return app;
71 }
72
73 /// <summary>
74 /// Registers a handler for signin/failure invoke activities sent when SSO token exchange fails, with cancellation token support.
75 /// </summary>
76 public static App OnSignInFailure(this App app, Func<IContext<SignIn.FailureActivity>, CancellationToken, Task> handler)
77 {
78 app.Router.Register(new Route()
79 {
80 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.Failure]),
81 Type = app.Status is null ? RouteType.System : RouteType.User,
82 Handler = async context =>
83 {
84 await handler(context.ToActivityType<SignIn.FailureActivity>(), context.CancellationToken);
85 return null;
86 },
87 Selector = activity => activity is SignIn.FailureActivity
88 });
89
90 return app;
91 }
92
93 /// <summary>
94 /// Registers a handler for signin/failure invoke activities sent when SSO token exchange fails, with cancellation token support.
95 /// </summary>
96 public static App OnSignInFailure(this App app, Func<IContext<SignIn.FailureActivity>, CancellationToken, Task<object?>> handler)
97 {
98 app.Router.Register(new Route()
99 {
100 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.Failure]),
101 Type = app.Status is null ? RouteType.System : RouteType.User,
102 Handler = context => handler(context.ToActivityType<SignIn.FailureActivity>(), context.CancellationToken),
103 Selector = activity => activity is SignIn.FailureActivity
104 });
105
106 return app;
107 }
108
109 /// <summary>
110 /// Registers a handler for signin/failure invoke activities sent when SSO token exchange fails, with cancellation token support.
111 /// </summary>
112 public static App OnSignInFailure(this App app, Func<IContext<SignIn.FailureActivity>, CancellationToken, Task<Response?>> handler)
113 {
114 app.Router.Register(new Route()
115 {
116 Name = string.Join("/", [ActivityType.Invoke, Name.SignIn.Failure]),
117 Type = app.Status is null ? RouteType.System : RouteType.User,
118 Handler = async context => await handler(context.ToActivityType<SignIn.FailureActivity>(), context.CancellationToken),
119 Selector = activity => activity is SignIn.FailureActivity
120 });
121
122 return app;
123 }
124}
125