//----------------------------------------------------------------------- // // Copyright (c) Outercurve Foundation. All rights reserved. // //----------------------------------------------------------------------- namespace DotNetOpenAuth.OpenIdOfflineProvider { using System; using System.Collections.Generic; using System.Diagnostics.Contracts; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using DotNetOpenAuth.Messaging; using DotNetOpenAuth.OpenId.Provider; /// /// Interaction logic for CheckIdWindow.xaml /// public partial class CheckIdWindow : Window { /// /// Initializes a new instance of the class. /// /// The OpenID Provider host. /// The incoming authentication request. private CheckIdWindow(HostedProvider provider, IAuthenticationRequest request) { Contract.Requires(request != null); this.InitializeComponent(); // Initialize the window with appropriate values. this.realmLabel.Content = request.Realm; this.immediateModeLabel.Visibility = request.Immediate ? Visibility.Visible : Visibility.Collapsed; this.setupModeLabel.Visibility = request.Immediate ? Visibility.Collapsed : Visibility.Visible; bool isRPDiscoverable = request.IsReturnUrlDiscoverable(provider.Provider.Channel.WebRequestHandler) == RelyingPartyDiscoveryResult.Success; this.discoverableYesLabel.Visibility = isRPDiscoverable ? Visibility.Visible : Visibility.Collapsed; this.discoverableNoLabel.Visibility = isRPDiscoverable ? Visibility.Collapsed : Visibility.Visible; if (request.IsDirectedIdentity) { this.claimedIdentifierBox.Text = provider.UserIdentityPageBase.AbsoluteUri; this.localIdentifierBox.Text = provider.UserIdentityPageBase.AbsoluteUri; } else { this.claimedIdentifierBox.Text = request.ClaimedIdentifier; this.localIdentifierBox.Text = request.LocalIdentifier; } } /// /// Processes an authentication request by a popup window. /// /// The OpenID Provider host. /// The incoming authentication request. internal static void ProcessAuthentication(HostedProvider provider, IAuthenticationRequest request) { Contract.Requires(provider != null); Contract.Requires(request != null); var window = new CheckIdWindow(provider, request); bool? result = window.ShowDialog(); // If the user pressed Esc or cancel, just send a negative assertion. if (!result.HasValue || !result.Value) { request.IsAuthenticated = false; return; } request.IsAuthenticated = window.tabControl1.SelectedItem == window.positiveTab; if (request.IsAuthenticated.Value) { request.ClaimedIdentifier = window.claimedIdentifierBox.Text; request.LocalIdentifier = window.localIdentifierBox.Text; } } /// /// Handles the Click event of the sendResponseButton control. /// /// The source of the event. /// The instance containing the event data. private void sendResponseButton_Click(object sender, RoutedEventArgs e) { this.DialogResult = true; Close(); } } }