public async Task <IActionResult> Register(LoginUser loginUser) { try { ClaimsPrincipal currentUser = this.User; var id = currentUser.Claims.FirstOrDefault(z => z.Type.Contains("primarysid")).Value; if (id == null) { return(BadRequest("Identificação do usuário não encontrada.")); } var empresaId = Convert.ToInt32(currentUser.Claims.FirstOrDefault(z => z.Type.Contains("sid")).Value); var claimscurrentUser = currentUser.Claims.ToList(); var permissions = claimscurrentUser.Where(c => c.Type.Contains("role")).Select(c => c.Value).ToList(); var user = new IdentityUser { UserName = loginUser.Email.Split("@")[0], Email = loginUser.Email }; var result = await userManager.CreateAsync(user, "Fin@nceiro2021"); if (result.Succeeded) { List <Claim> claims = new List <Claim>(); permissions.ForEach(permission => { if (!permission.Equals("CEO")) { claims.Add(new Claim(ClaimTypes.Role, permission)); } }); await userManager.AddClaimsAsync(user, claims); var empresaAspNetUsers = new EmpresaAspNetUsers() { EmpresaId = empresaId, ApplicationUserId = user.Id }; empresaAspNetUsersRepository.Insert(empresaAspNetUsers); sendEmail(user, "Fin@nceiro2021"); } else { return(BadRequest("Falha na criação do usuário!")); } return(new JsonResult(user)); } catch (Exception ex) { return(new JsonResult(ex)); } }
public void Insert(EmpresaAspNetUsers entity) { entities.Add(entity); _context.SaveChanges(); }
public async Task <IActionResult> Save(Empresa empresa) { try { if (empresa.Id > decimal.Zero) { var empresaBase = genericRepository.Get(empresa.Id); empresaBase.Nome = empresa.Nome; empresaBase.Cnpj = empresa.Cnpj; empresaBase.CodigoFilial = empresa.CodigoFilial; empresaBase.NomeUsuarioDominio = empresa.NomeUsuarioDominio; empresaBase.ContaTransitoria = empresa.ContaTransitoria; genericRepository.Update(empresaBase); } else { var exist = await userManager.FindByEmailAsync(empresa.Email); if (exist != null) { return(BadRequest("Email já usado para outra Empresa!")); } var user = new IdentityUser() { Email = empresa.Email, UserName = empresa.Email }; var result = await userManager.CreateAsync(user, "Fin@nceiro2021"); if (result.Succeeded) { List <Claim> claims = new List <Claim>(); claims.Add(new Claim(ClaimTypes.Role, "Empresa")); claims.Add(new Claim(ClaimTypes.Role, "CEO")); empresa.Modulos.ForEach(modulo => { claims.Add(new Claim(ClaimTypes.Role, modulo.Name)); }); await userManager.AddClaimsAsync(user, claims); empresa.Ativo = true; genericRepository.Insert(empresa); var empresaAspNetUsers = new EmpresaAspNetUsers() { EmpresaId = empresa.Id, ApplicationUserId = user.Id }; empresaAspNetUsersRepository.Insert(empresaAspNetUsers); sendEmail(empresa, user, "Fin@nceiro2021"); } else { return(BadRequest(result.Errors.FirstOrDefault().Description)); } } return(new OkResult()); } catch (Exception ex) { return(BadRequest("Falha no save das Empresas - " + ex.Message)); } }