Example #1
0
        /// <summary>
        /// Prepara as claims com base nas permissões retornadas pelo usuário
        /// </summary>
        /// <param name="context">Contexto da execução</param>
        /// <param name="authenticationResult">Resultado da autenticação com os dados do usuário</param>
        /// <param name="idClinica">Clinica selecionada no momento do login</param>
        /// <returns>Identity criado</returns>
        private ClaimsIdentity PrepareClaims(OAuthGrantResourceOwnerCredentialsContext context, AuthenticationResult authenticationResult, int idClinica)
        {
            // Busca os dados da última clínica autenticada. Caso seja o primeiro acesso, a clínica será a primeira retornada da lista de clínicas vinculadas.
            var repClinica = new ClinicaRepository();
            var clinica    = repClinica.GetByKey(idClinica);

            // Recupera os dados do grupo do usuário para a clínica logada.
            var usuarioGrupoRep = new UsuarioGrupoRepository();
            var grupo           = usuarioGrupoRep.GetByUsuarioClinica(authenticationResult.IdUsuario, idClinica);

            // Faz o parse da lista de permissões do banco para uma estrutura fácil de ser serializada e salva no identity.
            var listPermissaoAplicacao = JsonConvert.SerializeObject(ParsePermissaoAplicacao(grupo.Permissoes));

            // Cria o identity.
            var identity = new ClaimsIdentity(context.Options.AuthenticationType);

            identity.AddClaim(new Claim(ClaimTypes.Name, authenticationResult.Nome));
            identity.AddClaim(new Claim(ClaimTypes.Sid, authenticationResult.IdUsuario.ToString()));
            identity.AddClaim(new Claim("Clinica", clinica.IdClinica.ToString()));
            identity.AddClaim(new Claim("IdUsuarioGrupo", authenticationResult.IdUsuarioGrupo.ToString()));
            identity.AddClaim(new Claim("Permissions", listPermissaoAplicacao));

            foreach (var item in grupo.Permissoes)
            {
                var permissoes = item.Permissoes.Split('.').ToList();
                foreach (var permissao in permissoes)
                {
                    identity.AddClaim(new Claim(ClaimTypes.Role, item.IdAplicacao + "." + permissao));
                }
            }

            return(identity);
        }
Example #2
0
 public IHttpActionResult Post([FromBody] ClinicaForm entity)
 {
     using (var repository = new ClinicaRepository())
     {
         try
         {
             return(Ok(CreateResponse(true, "Clínica salva com sucesso", repository.Save(entity))));
         }
         catch (System.Exception ex)
         {
             return(Content(HttpStatusCode.BadRequest, CreateResponse(false, "Erro ao salvar os dados da clínica", ex.Message)));
         }
     }
 }
Example #3
0
 public IHttpActionResult GetForEdit([FromUri] int key)
 {
     using (var repository = new ClinicaRepository())
     {
         try
         {
             return(Ok(CreateResponse(true, "Dados da clínica retornada com sucesso", repository.GetForEdit(key))));
         }
         catch (System.Exception ex)
         {
             return(Content(HttpStatusCode.BadRequest, CreateResponse(false, "Erro ao retornar os dados da clínica", ex.Message)));
         }
     }
 }
Example #4
0
 public IHttpActionResult GetList([FromUri] ClinicaFilterQuery filter)
 {
     using (var repository = new ClinicaRepository())
     {
         try
         {
             return(Ok(CreateResponse(true, "Lista d clínicas retornada com sucesso", repository.GetList(filter))));
         }
         catch (System.Exception ex)
         {
             return(Content(HttpStatusCode.BadRequest, CreateResponse(false, "Erro ao retornar as clínicas", ex.Message)));
         }
     }
 }
Example #5
0
 public IHttpActionResult GetClinicaSigla()
 {
     using (var repo = new ClinicaRepository())
     {
         try
         {
             return(Ok(CreateResponse(true, "Lista de clínicas", repo.GetListaSigla())));
         }
         catch (System.Exception ex)
         {
             return(Content(HttpStatusCode.BadRequest, CreateResponse(false, "Erro ao retornar as clínicas", ex.Message)));
         }
     }
 }
Example #6
0
 public IHttpActionResult Delete([FromUri] int key)
 {
     using (var repository = new ClinicaRepository())
     {
         try
         {
             return(Ok(CreateResponse(true, "Clínica excluída com sucesso", repository.Delete(key))));
         }
         catch (System.Exception ex)
         {
             return(Content(HttpStatusCode.BadRequest, CreateResponse(false, "Erro ao excluir uma clínica", ex.Message)));
         }
     }
 }
Example #7
0
        /// <summary>
        /// Retorna toda a estrutura necessária para utilização da aplicação.
        /// </summary>
        /// <param name="idClinica"></param>
        /// <returns></returns>
        public ApplicationStructureResult GetApplicationStructure(int?idClinica = null)
        {
            var appStructure = new ApplicationStructureResult();

            appStructure.MainMenu.AddRange(RetornarMainMenu());

            appStructure.Cockpit = RetornarCockpit();

            UsuarioRepository usuarioRepository = new UsuarioRepository();
            var usuarioLogado = usuarioRepository.GetByKeyFullWithClinica(IdUsuarioLogado);

            usuarioLogado.Senha        = usuarioLogado.SenhaSalt = null;
            appStructure.UsuarioLogado = usuarioLogado;

            ClinicaRepository clinicaRep = new ClinicaRepository();

            appStructure.Clinica = clinicaRep.GetByKeyFull(IdClinicaLogada);

            return(appStructure);
        }
Example #8
0
 public ClinicaService()
 {
     _dataContext       = new DataContext();
     _clinicaRepository = new ClinicaRepository();
     ResponseService    = new ResponseService();
 }