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)); }
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(); } }