public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { Invariant.IsNotNull(bindingContext, "bindingContext"); LogOnCommand command = (LogOnCommand)base.BindModel(controllerContext, bindingContext); if (string.IsNullOrWhiteSpace(command.UserName)) { ValueProviderResult result = bindingContext.ValueProvider.GetValue("openid_identifier") ?? bindingContext.ValueProvider.GetValue("openid_username"); if (result != null) { command.UserName = result.AttemptedValue; } } if (!command.RememberMe.HasValue) { ValueProviderResult result = bindingContext.ValueProvider.GetValue("openid_identifier_remember") ?? bindingContext.ValueProvider.GetValue("openid_username_remember"); if (result != null) { command.RememberMe = (bool?)result.ConvertTo(typeof(bool?), Culture.Current); } } return(command); }
public ActionResult LogOn(LogOnCommand command) { Check.Argument.IsNotNull(command, "command"); Identifier id; if (string.IsNullOrWhiteSpace(command.UserName) || !Identifier.TryParse(command.UserName, out id)) { string errorMessage = string.IsNullOrWhiteSpace(command.UserName) ? TextMessages.OpenIDUserNameCannotBeBlank : TextMessages.InvalidOpenIDUserName; ModelState.AddModelError(ModelStateUserNameKey, errorMessage); } else { cookie.SetValue(CookieRememberMe, command.RememberMe ?? false); cookie.SetValue(CookieReturnUrl, !string.IsNullOrWhiteSpace(command.ReturnUrl) ? command.ReturnUrl : Url.Home()); try { Realm realm = new Realm(new Uri(Url.ToAbsolute(Url.LogOn()))); IAuthenticationRequest request = openId.CreateRequest(id, realm); ClaimsRequest fetch = new ClaimsRequest { Email = DemandLevel.Request }; request.AddExtension(fetch); request.RedirectToProvider(); } catch (ProtocolException e) { ModelState.AddModelError(ModelStateUserNameKey, e.Message); } } return(View()); }