Ejemplo n.º 1
0
        public IHttpActionResult ObtenerPermisos()
        {
            Usuario usuario = GetUsuarioLogueado();

            if (usuario == null)
            {
                return(Ok());
            }

            LoguinCidiQuery query = new LoguinCidiQuery
            {
                Cuil = usuario.Cuil.ToString()
            };
            LoguinCidiQueryResult queryResult = _queryDispatcher.Dispatch <LoguinCidiQuery, LoguinCidiQueryResult>(query);

            string perfilId = "";

            FuncionalidadesSingleton.Instance.replaceFuncionalidades(queryResult.UsuarioDto.IdRol.ToString(), queryResult.FuncionalidadesDto);
            return(Ok(queryResult));
        }
Ejemplo n.º 2
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            var allowedOrigin = context.OwinContext.Get <string>("as:clientAllowedOrigin");

            if (allowedOrigin == null)
            {
                allowedOrigin = "*";
            }

            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { allowedOrigin });

            try
            {
                bool registradoEnSalasCuna = false;
                bool logueadoEnCidi        = false;

                UsuarioCidiDto usuarioCidi = UsuarioCidiFactory.ValidarUsuarioCidi();

                if (usuarioCidi != null)
                {
                    logueadoEnCidi = true;
                    LoguinCidiQuery query = new LoguinCidiQuery
                    {
                        Cuil = usuarioCidi.Cuil
                    };

                    QueryDispatcher       _QueryDispatcher = ServiceLocator.Current.GetInstance <QueryDispatcher>();
                    LoguinCidiQueryResult queryResult      = _QueryDispatcher.Dispatch <LoguinCidiQuery, LoguinCidiQueryResult>(query);

                    if (queryResult.UsuarioDto != null && queryResult.UsuarioDto.Id != 0)
                    {
                        var identity = new ClaimsIdentity(context.Options.AuthenticationType);

                        queryResult.UsuarioDto.Apellido = usuarioCidi.Apellido;
                        queryResult.UsuarioDto.Nombre   = usuarioCidi.Nombre;

                        Claim usuarioClimb = new Claim("User", new JavaScriptSerializer().Serialize(queryResult.UsuarioDto));
                        identity.AddClaim(new Claim(ClaimTypes.Name, usuarioCidi.Cuil.ToString()));
                        identity.AddClaim(usuarioClimb);
                        UrlCidiQueryResult urlsCidiResult = _QueryDispatcher.Dispatch <UrlCidiQuery, UrlCidiQueryResult>(null);

                        //**//

                        IDictionary <string, string> data = new Dictionary <string, string>
                        {
                            //{ "Paginas", JsonConvert.SerializeObject(queryResult.FuncionalidadesDto) },
                            { "User", JsonConvert.SerializeObject(queryResult.UsuarioDto) },
                            { "UrlCidi", urlsCidiResult.UrlCidi },
                            { "UrlCerrarSesionCidi", urlsCidiResult.UrlCidiLogout },
                            { "UrlInicarSesionCidi", urlsCidiResult.UrlCidiLogin },
                            { "as:client_id", context.ClientId == null ? string.Empty : context.ClientId }
                        };
                        AuthenticationProperties properties = new AuthenticationProperties(data);

                        Microsoft.Owin.Security.AuthenticationTicket ticket = new Microsoft.Owin.Security.AuthenticationTicket(identity, properties);

                        context.Validated(ticket);

                        registradoEnSalasCuna = true;
                    }
                }

                if (!logueadoEnCidi)
                {
                    //El usuario no está logueado a través de CIDI.
                    context.SetError("NO_AUTENTICADO_EN_CIDI", "");
                    context.Response.ReasonPhrase = "NO_AUTENTICADO_EN_CIDI";
                }
                else if (!registradoEnSalasCuna)
                {
                    //El usuario está logueado a través CIDI pero no se encuentra registrado en Salas Cuna.
                    context.SetError("NO_REGISTRADO_EN_SALAS_CUNA", "");
                    //context.
                    context.Response.ReasonPhrase = "NO_REGISTRADO_EN_SALAS_CUNA";
                }
            }
            catch (Exception e)
            {
                context.SetError("Server error", e.StackTrace);
                context.Rejected();
            }
        }