Skip to main content
Sign in
Snippets Groups Projects

New: Implement Logout

5 files
+ 46
4
Compare changes
  • Side-by-side
  • Inline

Files

@@ -4,6 +4,7 @@ using System.Threading.Tasks;
@@ -4,6 +4,7 @@ using System.Threading.Tasks;
using Coscine.STS.Utils;
using Coscine.STS.Utils;
using Coscine.STS.Data;
using Coscine.STS.Data;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity;
 
using System;
namespace Coscine.STS.Controllers
namespace Coscine.STS.Controllers
{
{
@@ -21,6 +22,9 @@ namespace Coscine.STS.Controllers
@@ -21,6 +22,9 @@ namespace Coscine.STS.Controllers
{
{
ViewBag.ReturnUrl = UrlGenerator.ExtendReturnUrl(returnUrl, Request);
ViewBag.ReturnUrl = UrlGenerator.ExtendReturnUrl(returnUrl, Request);
ViewBag.ORCiDUrl = ORCiDHandler.GetORCiDOAuthUrl() + UrlGenerator.ORCiDRedirectUrl();
ViewBag.ORCiDUrl = ORCiDHandler.GetORCiDOAuthUrl() + UrlGenerator.ORCiDRedirectUrl();
 
ViewBag.IdpUrl = new Uri(
 
Program.Configuration.GetStringAndWait("coscine/global/shibboleth/metadata")
 
).GetLeftPart(System.UriPartial.Authority);
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
ViewBag.AppJs = enc.GetString(Program.Configuration.GetAndWait("coscine/apps/login/appjs"));
ViewBag.AppJs = enc.GetString(Program.Configuration.GetAndWait("coscine/apps/login/appjs"));
return View();
return View();
@@ -48,5 +52,27 @@ namespace Coscine.STS.Controllers
@@ -48,5 +52,27 @@ namespace Coscine.STS.Controllers
ModelState.AddModelError("", "The userid provided is incorrect.");
ModelState.AddModelError("", "The userid provided is incorrect.");
return View(model);
return View(model);
}
}
 
 
[Route("[controller]/logout")]
 
public async Task<ActionResult> Logout()
 
{
 
var externalLoginInfo = await _signInManager.GetExternalLoginInfoAsync();
 
var loggedInWithShibboleth = (externalLoginInfo != null && externalLoginInfo.LoginProvider == "Saml2");
 
 
await _signInManager.SignOutAsync();
 
 
foreach (var cookie in Request.Cookies.Keys)
 
{
 
Response.Cookies.Delete(cookie);
 
}
 
 
ViewBag.LoginUrl = UrlGenerator.GetLoginUrl(Request) + "&logout=true";
 
if (loggedInWithShibboleth)
 
{
 
ViewBag.LoginUrl += "&loggedInWithShibboleth=true";
 
}
 
 
return View();
 
}
}
}
}
}
Loading