예제 #1
0
        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));
            }
        }