Ejemplo n.º 1
0
 public async Task <HttpResponseMessage> Get([FromUri] AccountLinksQuery q)
 {
     return(await this.Request.GetActorIdClaimsAsync((actorId, claims) =>
     {
         return EastFive.Web.Configuration.Settings.GetGuid(
             EastFive.Api.AppSettings.ActorIdSuperAdmin,
             (actorIdSuperAdmin) =>
         {
             if (actorIdSuperAdmin == actorId)
             {
                 var settings = ConfigurationManager.AppSettings.AllKeys
                                .Select(x => new AppSetting {
                     Name = x, Value = ConfigurationManager.AppSettings[x]
                 }).OrderBy(x => x.Name).ToArray();
                 return this.Request.CreateResponse(System.Net.HttpStatusCode.OK, settings, "application/json").ToTask();
             }
             return this.Request.CreateResponse(System.Net.HttpStatusCode.NotFound).ToTask();
         },
             (why) => this.Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError, why).ToTask());
     }));
 }
        public async Task <IHttpActionResult> Get([FromUri] AccountLinksQuery q)
        {
            var location = EastFive.Web.Configuration.Settings.GetString("AffirmHealth.PDMS.Api.UILocation", s => s, (s) => "");

            var response_mode = q.response_mode;
            //var redirect_uri = q.redirect_uri;
            var redirect_uri = $"{location}/upgrade";

            //return this.Request.CreateResponse(System.Net.HttpStatusCode.OK,
            //    "You have an old version of the site. Please refresh your browser")
            //    .ToActionResult();

            var context = this.Request.GetSessionServerContext();

            if (String.IsNullOrWhiteSpace(redirect_uri))
            {
                return(this.Request.CreateRedirectResponse <Controllers.AuthenticationRequestLinkController>(Url).ToActionResult());
            }

            if (!Uri.TryCreate(redirect_uri, UriKind.Absolute, out Uri redirectUrl))
            {
                return(this.Request
                       .CreateResponseValidationFailure(q, qry => qry.redirect_uri)
                       .ToActionResult());
            }

            var response = await context.GetLoginProvider(CredentialValidationMethodTypes.Password,
                                                          async (loginProvider) =>
            {
                var callbackUrl = this.Url.GetLocation <OpenIdResponseController>(
                    typeof(OpenIdResponseController)
                    .GetCustomAttributes <RoutePrefixAttribute>()
                    .Select(routePrefix => routePrefix.Prefix)
                    .First());
                var authReqId = Guid.NewGuid();
                return(await context.Sessions.CreateLoginAsync(authReqId,
                                                               CredentialValidationMethodTypes.Password, redirectUrl, redirectUrl,
                                                               (type) => Url.GetLocation(type),
                                                               (authRequest) =>
                {
                    return this.Request.CreateResponse(System.Net.HttpStatusCode.OK,
                                                       new Resources.AccountLink
                    {
                        Login = authRequest.loginUrl,
                        Signup = loginProvider.GetSignupUrl(authReqId, callbackUrl),
                        Logout = authRequest.logoutUrl,
                    });
                },
                                                               () => Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError).AddReason("GUID NOT UNIQUE"),
                                                               () => Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError).AddReason("AADB2C login is not enabled"),
                                                               (why) => Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError).AddReason(why),
                                                               (why) => Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError).AddReason(why)));
            },
                                                          () => Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError)
                                                          .AddReason("AADB2C login is not enabled")
                                                          .ToTask(),
                                                          (why) => Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError)
                                                          .AddReason(why)
                                                          .ToTask());

            return(response
                   .ToActionResult());
        }