Skip to content
Snippets Groups Projects
Select Git revision
  • d0aca1dcbebc3354fd1520919f283dbf4d0c8acd
  • master default protected
  • dev protected
  • Issue/3003-stsInstitute
  • gitkeep
  • Hotfix/2775-dfnCertRollover
  • Hotfix/2592-sameProvider
  • Hotfix/1234-handlingMergeToken
  • Hotfix/2576-certificatePatch
  • Issue/2309-docs
  • Issue/2325-fixApiTokenMerging
  • Issue/1974-shibbolethLogout
  • Fix/xxxx-migrateLogin
  • Hotfix/2169-ignoreAuthContext
  • Experimental/newSaml2
  • Issue/2147-exchangingCoscineCertificate-step2
  • Issue/2147-exchangingCoscineCertificate
  • Issue/2147-exchangingCoscineCertificate-step3
  • uiv2
  • Issue/2115-extendParsingPairwiseId
  • Hotfix/2103-RepositoryurlstoConsulUpdateMappingGivennameUiv2
  • v4.1.1
  • v4.1.0
  • v4.0.9
  • v4.0.8
  • v4.0.7
  • v4.0.6
  • v4.0.5
  • v4.0.4
  • v4.0.3
  • v4.0.2
  • v4.0.1
  • v4.0.0
  • v3.1.4
  • v3.1.3
  • v3.1.2
  • v3.1.1
  • v3.1.0
  • v3.0.0
  • v2.4.4
  • v2.4.3
41 results

AccountController.cs

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    AccountController.cs 2.04 KiB
    
    using Coscine.STS.Models;
    using Microsoft.AspNetCore.Mvc;
    using System.IdentityModel.Claims;
    using System.Web.Security;
    using System.IdentityModel;
    using System.IdentityModel.Configuration;
    using System.IdentityModel.Protocols.WSTrust;
    using System.IdentityModel.Tokens;
    using System.Linq;
    using System.Security.Claims;
    using Microsoft.AspNetCore.Authentication.Cookies;
    using Microsoft.AspNetCore.Authentication;
    using System.Threading.Tasks;
    using System;
    using Coscine.STS.Utils;
    using System.Net;
    
    namespace Coscine.STS.Controllers
    {
        public class AccountController : Controller
        {
            [Route("[controller]/login")]
            public ActionResult Login(string returnUrl)
            {
                ViewBag.ReturnUrl = UrlGenerator.ExtendReturnUrl(returnUrl, Request);
                ViewBag.ORCiDUrl = ORCiDHandler.GetORCiDOAuthUrl() + UrlGenerator.ORCiDRedirectUrl();
                System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
                ViewBag.AppJs = enc.GetString(Program.Configuration.GetAndWait("coscine/apps/login/appjs"));
                return View();
            }
    
            [HttpPost("[controller]/login")]
            public async Task<ActionResult> Login(LoginModel model, string returnUrl)
            {
                if (ModelState.IsValid)
                {
                    var claims = new[] { new System.Security.Claims.Claim(System.IdentityModel.Claims.ClaimTypes.Name, model.UserId.ToString()) };
    
                    var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
    
                    await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity));
                    
                    return Redirect(UrlGenerator.ExtendReturnUrl(returnUrl, Request));
                }
    
                ViewBag.ReturnUrl = UrlGenerator.ExtendReturnUrl(returnUrl, Request);
                ViewBag.ORCiDUrl = ORCiDHandler.GetORCiDOAuthUrl() + UrlGenerator.ORCiDRedirectUrl();
                ModelState.AddModelError("", "The userid provided is incorrect.");
                return View(model);
            }
        }
    }