Skip to content
Snippets Groups Projects
Select Git revision
  • 3ac8c3e7fdd5fa05b6b653d7cadce5b5853379b2
  • main default protected
  • dev protected
  • Issue/3142-kpiGenerator
  • Hotfix/3115-userReportingEmpty2
  • Hotfix/3115-userReportingEmpty
  • Issue/3043-DataStorageNrwResource
  • Issue/3011-maintenanceMode
  • Issue/2492-respOrg
  • Issue/2446-addingResponsibleOrganization
  • Issue/2982-kpiDataPub
  • Issue/2981-dataPubInDb
  • Issue/2881-messageController
  • test-linux-pipelines
  • Issue/2944-gdShenanigans
  • Issue/2672-fixSfbPidPointing
  • Issue/2769-migrateCron
  • Issue/2668-graphDeployer
  • Issue/2847-reporting
  • Issue/2627-addPidRecord
  • Issue/2432-publicationKpi
  • v1.9.10
  • v1.9.9
  • v1.9.8
  • v1.9.7
  • v1.9.6
  • v1.9.5
  • v1.9.4
  • v1.9.3
  • v1.9.2
  • v1.9.1
  • v1.9.0
  • v1.8.0
  • v1.7.0
  • v1.6.0
  • v1.5.0
  • v1.4.0
  • v1.3.3
  • v1.3.2
  • v1.3.1
  • v1.3.0
41 results

ProjectForCreationDtoTests.cs

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    HomeController.cs 3.01 KiB
    using System;
    using System.IdentityModel.Configuration;
    using System.IdentityModel.Services;
    using System.IdentityModel.Tokens;
    using System.Security.Claims;
    using Coscine.Api.STS.Security;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Http.Features;
    using Microsoft.AspNetCore.Http;
    using Coscine.Api.STS.Utils;
    using Coscine.ApiCommons;
    using Coscine.Database.Models;
    using System.Linq;
    
    namespace Coscine.Api.STS.Controllers
    {
        public class HomeController : Controller
        {
            public const string Action = "wa";
            public const string SignInString = "wsignin1.0";
            public const string SignOutString = "wsignout1.0";
            
            //[Authorize]
            [Route("/")]
            public ActionResult Index()
            {
                if (User.Identity.IsAuthenticated)
                {
                    var res = Request.Query[Action];
                    if (res.Count > 0)
                    {
                        var action = Request.Query[Action][0];
    
                        if (action == SignInString)
                        {
                            var userIdString = User.Identity.Name;
                            var userId = new Guid(userIdString);
    
                            TOSModel tosModel = new TOSModel();
                            var tosAcceptedList = tosModel.GetAllWhere((entry) => entry.UserId == userId);
                            var currentTos = Configurator.Configuration.GetStringAndWait("coscine/global/tos/version");
                            var tosAccepted = tosAcceptedList != null
                                && tosAcceptedList.Any((entry) => entry.Version == currentTos);
                            if (!tosAccepted)
                            {
                                string tosUrl = UrlGenerator.GetTOSUrl(Request, userIdString);
                                return Redirect(tosUrl);
                            }
    
                            var reqFeature = HttpContext.Features.Get<IHttpRequestFeature>();
                            var rawTarget = reqFeature.RawTarget;
                            var formData = ProcessSignIn(new Uri(Program.MainUrl + rawTarget), User);
                            return new ContentResult() { Content = formData, ContentType = "text/html" };
                        }
                    }
                }
                string loginUrl = UrlGenerator.GetLoginUrl(Request);
                return Redirect(loginUrl);
            }
    
            private string ProcessSignIn(Uri url, ClaimsPrincipal user)
            {
                var requestMessage = (SignInRequestMessage)WSFederationMessage.CreateFromUri(url);
                var signingCredentials = new X509SigningCredentials(CustomSecurityTokenService.GetCertificate());
    
                var config = new SecurityTokenServiceConfiguration(Request.Host.Value, signingCredentials);
                config.DefaultTokenLifetime = TimeSpan.FromDays(1);
                var sts = new CustomSecurityTokenService(config);
                var responseMessage = FederatedPassiveSecurityTokenServiceOperations.ProcessSignInRequest(requestMessage, user, sts);
                return responseMessage.WriteFormPost();
            }
        }
    }