/// <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); }
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))); } } }
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))); } } }
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))); } } }
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))); } } }
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))); } } }
/// <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); }
public ClinicaService() { _dataContext = new DataContext(); _clinicaRepository = new ClinicaRepository(); ResponseService = new ResponseService(); }