public ActionResult SignOutCallback(bool timeout) { if (Request.IsAuthenticated) { // Redirect to home page if the user is authenticated. return(RedirectToRoute(RecruitmentRouteNames.LandingPage)); } _authorizationDataProvider.Clear(HttpContext); if (timeout) { SetUserMessage(AuthorizeMessages.SignedOutTimeout, UserMessageLevel.Info); } else { SetUserMessage(AuthorizeMessages.SignedOut, UserMessageLevel.Info); } return(RedirectToRoute(RecruitmentRouteNames.LandingPage)); }
public ActionResult Authorize() { //TODO: ACS Calls this action during signout. Need to suppress it in a cleaner manner if (!Request.IsAuthenticated) { return(null); } var claimsPrincipal = (ClaimsPrincipal)User; var response = _providerUserMediator.Authorize(claimsPrincipal); var message = response.Message; var viewModel = response.ViewModel; //Clear existing claims _cookieAuthorizationDataProvider.Clear(HttpContext); //Add domain claims if (viewModel.EmailAddress != null) { AddClaim(SystemClaimTypes.Email, viewModel.EmailAddress, viewModel); } if (viewModel.EmailAddressVerified) { AddClaim(SystemClaimTypes.Role, Roles.VerifiedEmail, viewModel); } if (message != null) { SetUserMessage(message.Text, message.Level); } switch (response.Code) { case ProviderUserMediatorCodes.Authorize.EmptyUsername: case ProviderUserMediatorCodes.Authorize.MissingProviderIdentifier: case ProviderUserMediatorCodes.Authorize.MissingServicePermission: _cookieAuthorizationDataProvider.Clear(HttpContext); return(RedirectToRoute(RecruitmentRouteNames.SignOut, new { returnRoute = RecruitmentRouteNames.LandingPage })); case ProviderUserMediatorCodes.Authorize.NoProviderProfile: case ProviderUserMediatorCodes.Authorize.FailedMinimumSitesCountCheck: case ProviderUserMediatorCodes.Authorize.FirstUser: return(RedirectToRoute(RecruitmentRouteNames.ManageProviderSites)); case ProviderUserMediatorCodes.Authorize.NoUserProfile: return(RedirectToRoute(RecruitmentRouteNames.Settings)); case ProviderUserMediatorCodes.Authorize.EmailAddressNotVerified: return(RedirectToRoute(RecruitmentRouteNames.VerifyEmail)); case ProviderUserMediatorCodes.Authorize.Ok: var returnUrl = UserData.Pop(UserDataItemNames.ReturnUrl); if (returnUrl.IsValidReturnUrl()) { var decodedUrl = Server.UrlDecode(returnUrl); if (decodedUrl != null) { decodedUrl = decodedUrl.Replace("&", "&"); return(Redirect(decodedUrl.Replace("&", "&"))); } } return(RedirectToRoute(RecruitmentRouteNames.RecruitmentHome)); case ProviderUserMediatorCodes.Authorize.ProviderNotMigrated: return(RedirectToRoute(RecruitmentRouteNames.OnBoardingComplete)); default: throw new InvalidMediatorCodeException(response.Code); } }