public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                //mandando pra model

                var novoUsuario = new IdentityUser();

                novoUsuario.Email    = modelo.Email;
                novoUsuario.UserName = modelo.UserName;

                var resultado = await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                if (resultado.Succeeded)
                {
                    Thread thread = new Thread(() => {
                        var novoUsuario1 = novoUsuario;
                        Thread.Sleep(15000);
                        Task <string> .Run(async() => await new EmailSender().SendAsyncNew(novoUsuario1.Email,
                                                                                           "teste 15 sec", "teste 15 sec",
                                                                                           "teste 15 sec")).Wait();
                    });
                    await EnviarEmailDeConfirmacaoAsync(novoUsuario);

                    thread.Start();
                    //return View("AguardandoConfirmacao");
                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    AdicionaErros(resultado);
                }
            }
            return(View(modelo));
        }
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            //https://imasters.com.br/back-end/c-programacao-assincrona-async-e-await

            //detecta se o estado do modelo é valido ou não
            if (ModelState.IsValid)
            {
                //criando de fato o usuario
                var novoUsuario = new UsuarioAplicacao();

                //associando os campos recebidos do IdentityUser
                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto; //campo vindo da classe UsuarioAplicacao

                var resultado = await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                //verifica o resultado da ação
                if (resultado.Succeeded)
                {
                    await EnviarEmailDeConfirmacaoAsync(novoUsuario);

                    return(View("AguardandoConfirmacao")); //Apos incluir, redireciona para home
                }
                else
                {
                    AdicionaErros(resultado);
                }
            }

            //algo deu errado
            return(View(modelo));
        }
Esempio n. 3
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel model)
        {
            if (ModelState.IsValid)
            {
                var newUser = new UserApplication();
                newUser.NomeCompleto = model.NomeCompleto;
                newUser.Email        = model.Email;
                newUser.UserName     = model.UserName;

                var user      = UserManager.FindByEmail(model.Email);
                var existUser = user != null;
                if (existUser)
                {
                    return(RedirectToAction("Index", "Home"));
                }

                var result = await UserManager.CreateAsync(newUser, model.Senha);


                if (result.Succeeded)
                {
                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    AddErrors(result);
                }
            }

            return(View());
        }
Esempio n. 4
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var novoUsuario = new UsuarioAplicacao();

                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;

                var usuario = await UserManager.FindByEmailAsync(novoUsuario.Email);

                var usuarioExiste = usuario != null;

                if (usuarioExiste)
                {
                    return(View("AguardandoConfirmacao"));
                }

                var resultado = await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                if (resultado.Succeeded)
                {
                    await EnviarEmailConfirmacao(novoUsuario);

                    return(View("AguardandoConfirmacao"));
                }
                else
                {
                    AdicionaErros(resultado);
                }
            }

            return(View(modelo));
        }
Esempio n. 5
0
        public async Task <ActionResult> Register(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var newUser = new UserAplication
                {
                    Email    = modelo.Email,
                    UserName = modelo.UserName,
                    FullName = modelo.FullName
                };

                var usuario = await UserManager.FindByEmailAsync(modelo.Email);

                var usuarioJaExiste = usuario != null;

                if (usuarioJaExiste)
                {
                    return(RedirectToAction("Home", "Home"));
                }

                var resultado = await UserManager.CreateAsync(newUser, modelo.Password);

                if (resultado.Succeeded)
                {
                    return(RedirectToAction("Home", "Home"));
                }
                else
                {
                    AdicionaErros(resultado);
                }
            }

            // Alguma coisa de errado aconteceu!
            return(View(modelo));
        }
Esempio n. 6
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var novoUsuario = new UsuarioAplicacao();

                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;

                var usuario         = UserManager.FindByEmailAsync(modelo.Email);
                var usuarioJaExiste = usuario != null;

                //if (usuarioJaExiste)
                //return View("AguardandoConfirmacao");
                //return RedirectToAction("Index", "Home");

                var resultado = await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                if (resultado.Succeeded)
                {
                    await EnviarEmailDeConfirmacaoAsync(novoUsuario);

                    return(View("AguardandoConfirmacao"));
                }
                else
                {
                    AdicionaErros(resultado);
                }
            }

            // Alguma coisa de errado aconteceu!
            return(View(modelo));
        }
Esempio n. 7
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel model)
        {
            if (ModelState.IsValid)
            {
                var usuario = await UserManager.FindByEmailAsync(model.Email);

                if (usuario != null)
                {
                    return(RedirectToAction("AguardandoConfirmacao"));
                }
                else
                {
                    Conta conta = new Conta()
                    {
                        UserName     = model.UserName,
                        Email        = model.Email,
                        NomeCompleto = model.NomeCompleto
                    };
                    var result = await UserManager.CreateAsync(conta, model.Senha);

                    if (result.Succeeded)
                    {
                        await EnviarEmailConfirmacao(conta);

                        return(RedirectToAction("AguardandoConfirmacao"));
                    }
                    else
                    {
                        AdicionaErros(result);
                    }
                }
            }
            return(View());
        }
Esempio n. 8
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var novoUsuario = new UsuarioAplicacao();
                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;

                var user = await UserManager.FindByEmailAsync(modelo.Email);

                if (user != null)
                {
                    Console.WriteLine($"E-mail {modelo.Email} já cadastrado. Enviando usuário para tela inicial.");
                    return(View("AguardandoConfirmacao"));
                }

                var result = await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                if (result.Succeeded)
                {
                    await EnviarEmailDeConfirmacao(novoUsuario);

                    return(View("AguardandoConfirmacao"));
                }
                else
                {
                    AdicionaErros(result.Errors);
                }
            }
            return(View(modelo));
        }
 public IActionResult Registrar(ContaRegistrarViewModel model)
 {
     if (ModelState.IsValid)
     {
         //var dbContext = new IdentityDbContext<UsuarioAplicacao>();
         return(RedirectToAction("Index", "Home"));
     }
     return(View(model));
 }
Esempio n. 10
0
 public ActionResult Registrar(ContaRegistrarViewModel modelo)
 {
     if (ModelState.IsValid)
     {
         // Podemos incluir o usuario
         return(RedirectToAction("Index", "Home"));
     }
     return(View(modelo));
 }
        public ActionResult Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var dbContext = new IdentityDbContext <UsuarioAplicacao>();
                var userStore = new UserStore <UsuarioAplicacao>(dbContext);

                return(RedirectToAction("Index", "Home"));
            }


            return(View());
        }
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            //Verifica se o estado do nosso modelo é valido ou não.
            if (ModelState.IsValid)
            {
                // IdentUser já possui Email, UserName, entre outros, dentro das interfaces. Veja no F12.
                // IdentityDbContext usa uma tabela de IdentityUser, somos obrigados a usa-lá. Ele já faz o DbSet.
                var novoUsuario = new UsuarioAplicacao();

                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;



                var usuario = await UserManager.FindByEmailAsync(modelo.Email); //Busca um usuário que já existe.

                var usuarioJaExiste = usuario != null;                          // Diferente de null já foi cadastrado. Não devemos vazar dos dados do usuario

                //Redireciona o usuario para não mostrar os dados
                if (usuarioJaExiste)
                {
                    return(View("AguardandoConfirmacao"));
                }

                var resultado = await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                // Adiciona e salva no lugar do add e save chanches do Entity.


                //CreatedAsync tem tem o IdentityResult, que possui uma propriedade que tem um bool de Succeed, ou não
                if (resultado.Succeeded)// Verifica se o resultado do Created teve sucesso
                {
                    // Enviar o email de confirmação
                    await EnviarEmailDeConfirmacaoAsync(novoUsuario);

                    return(View("AguardandoConfirmacao"));
                }
                else
                {
                    // Metodo criado abaixo, para adicinae erros.
                    //Metodo erros
                    AdicionaErros(resultado);
                }
            }

            // Alguma coisa de errado aconteceu!
            return(View(modelo));
        }
Esempio n. 13
0
        public ActionResult Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var novoUsuario = new UsuarioAplicacao();

                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.Email        = modelo.Email;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;

                UserManager.Create(novoUsuario, modelo.Senha);

                RedirectToAction("Index", "Home");
            }
            //algo errado devolvemos o modelo
            return(View(modelo));
        }
Esempio n. 14
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                //incluir usuário
                //var dbContext = new IdentityDbContext<UsuarioAplicacao>("DefaultConnection");
                //var userStorie = new UserStore<UsuarioAplicacao>(dbContext);
                //var userManager = new UserManager<UsuarioAplicacao>(userStorie);

                var newUser = new UsuarioAplicacao
                {
                    Email        = modelo.Email,
                    UserName     = modelo.UserName,
                    NomeCompleto = modelo.NomeCompleto
                };

                var usuario = await _userManager.FindByEmailAsync(modelo.Email);

                if (usuario != null)
                {
                    return(RedirectToAction("AguardandoConfirmacao"));
                }

                var result = await UserManger.CreateAsync(newUser, modelo.Senha);

                //dbContext.Users.Add(newUser);
                //dbContext.SaveChanges();

                if (result.Succeeded)
                {
                    await EnviarEmailConfirmacaoAsync(newUser);

                    return(RedirectToAction("AguardandoConfirmacao"));
                }
                else
                {
                    AdicionaErros(result);
                }
            }


            return(View(modelo));
        }
Esempio n. 15
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var novoUsuario = new UsuarioAplicacao();

                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;

                await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                // Podemos incluir o usuário
                return(RedirectToAction("Index", "Home"));
            }

            // Alguma coisa de errado aconteceu!
            return(View(modelo));
        }
Esempio n. 16
0
        public ActionResult Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var dbContext   = new IdentityDbContext <UsuarioAplicacao>();
                var novoUsuario = new UsuarioAplicacao();

                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;

                dbContext.Users.Add(novoUsuario);
                dbContext.SaveChanges();

                //podemos incluir usuario
                return(RedirectToAction("Index", "Home"));
            }
            //alguma coisa de errado aconteceu
            return(View(modelo));
        }
Esempio n. 17
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                // Passou tudo para o Owin - Startup.cs
                //var dbContext = new IdentityDbContext<UsuarioAplicacao>("DefaultConnection");
                //var userStore = new UserStore<UsuarioAplicacao>(dbContext);
                //var userManager = new UserManager<UsuarioAplicacao>(userStore);

                var novoUsuario = new UsuarioAplicacao();

                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;

                var usuario = await UserManager.FindByEmailAsync(modelo.Email);

                var usuarioJaExiste = usuario != null;

                if (usuarioJaExiste)
                {
                    return(View("AguardandoConfirmacao"));
                }

                var resultado = await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                if (resultado.Succeeded)
                {
                    await EnviarEmailConfirmacaoAsync(novoUsuario);

                    return(View("AguardandoConfirmacao"));
                }
                else
                {
                    AdicionErros(resultado);
                }
            }

            return(View());
        }
Esempio n. 18
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var novoUsuario = new UsuarioAplicacao();

                novoUsuario.Email        = modelo.UserName;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;

                var usuario = await UserManager.FindByEmailAsync(modelo.Email);

                if (usuario != null)
                {
                    // Para proteger o usuairo, quando oemail ja estier cadastrado então redirecionaremos
                    // para entrada a fim de não cadastrarmos o mesmo com email duplicado e não iremos
                    // tambem fornecer aos hacckers a validação desse email cadastrado em nosso sistema.
                    return(RedirectToAction("AguardandoConfirmacao"));
                }

                var resultado = await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                if (resultado.Succeeded)
                {
                    // enviando email para usuario
                    await EnviarEmailConfirmacao(novoUsuario);

                    // incluir usuario
                    return(RedirectToAction("AguardandoConfirmacao"));
                }
                else
                {
                    AdicionaErro(resultado);
                }
            }

            // algo errado aconteceu
            return(View(modelo));
        }
Esempio n. 19
0
        public async Task <ActionResult> RegistrarSemOwin(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var dbContext = new IdentityDbContext <UsuarioAplicacao>("DefaultConnection");

                //para desaclopar o Identity do banco de dadaos vammos uam classe the storage
                var userStorage = new UserStore <UsuarioAplicacao>(dbContext);

                //para de fato usar o identity sem depender da tecnolgia de banco de dataos
                //temos que usar o userManager do pacote Identity

                /*
                 * Constataremos que essa interface está no namespace do Identity, somente no Core dele. Sendo assim, vamos utilizá-la em ContaController.
                 * Sabendo que UserStore não é suficiente para separar o banco de dados e o Identity, precisamos de um objeto que gerencie todos os elementos.
                 * Portanto, abaixo de userStore, criaremos a variável userManager (termo em inglês para "gerenciamento"). Esse também é o nome da classe que
                 * instanciaremos. O Visual Studio não oferecerá a opção de autocompletar porque UserManager está em um namespace diferente.
                 *
                 *  estamos desacoplando a dependência da tecnologia do banco de dados. Aqui sim, começamos a trabalhar com o Identity, de fato.
                 */
                var userManager = new UserManager <UsuarioAplicacao>(userStorage);

                var novoUsuario = new UsuarioAplicacao();
                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;

                //nao vamos mais preciar usar a tecnoligoa estpeciaficas do dbcontext.
                //dbContext.Users.Add(novoUsuario);
                //dbContext.SaveChanges();
                //podemos incluir o usuario
                await userManager.CreateAsync(novoUsuario, modelo.Senha);

                return(RedirectToAction("Index", "Home"));
            }
            //alguma coisa aconteceu de errado.
            return(View(modelo));
        }
Esempio n. 20
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var usuarioExistente = await UserManager.FindByEmailAsync(modelo.Email);

                var emailJaCadastrado = usuarioExistente != null;

                if (emailJaCadastrado)
                {
                    return(RedirectToAction("Index", "Home"));
                }

                // Registramos o usuário
                var usuario = new UsuarioAplicacao
                {
                    Email        = modelo.Email,
                    UserName     = modelo.Email,
                    NomeCompleto = modelo.NomeCompleto
                };
                var resultado = await UserManager.CreateAsync(usuario, modelo.Senha);

                if (resultado.Succeeded)
                {
                    await EnviarEmailConfirmacaoAsync(usuario);

                    return(View("AguardandoConfirmacao", usuario));
                }
                else
                {
                    AdicionarErros(resultado);
                }
            }

            // Algo de errado aconteceu. Mostraremos novamente esta view
            // com os erros de validação.
            return(View(modelo));
        }
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel model)
        {
            if (ModelState.IsValid)
            {
                var novoUsuario = new UsuarioAplicacao
                {
                    Email        = model.Email,
                    UserName     = model.UserName,
                    NomeCompleto = model.NomeCompleto
                };

                var usuario = await UserManager.FindByEmailAsync(model.Email);

                var usuarioJaExiste = usuario != null;

                if (usuarioJaExiste)
                {
                    return(View("AguardandoConfirmação"));
                }

                var result = await UserManager.CreateAsync(novoUsuario, model.Senha);

                if (result.Succeeded)
                {
                    await EnviarEmailConfirmacaoAsync(novoUsuario);

                    return(View("AguardandoConfirmação"));
                }

                foreach (var erro in result.Errors)
                {
                    ModelState.AddModelError("", erro);
                }
            }

            return(View(model));
        }
Esempio n. 22
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var novoUsuario = new UsuarioAplicacao();

                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;
                // novoUsuario.PasswordHash = modelo.Senha;

                var resultado = await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                if (resultado.Succeeded)
                {
                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    AdicionaErros(resultado);
                }
            }
            return(View(modelo));
        }
Esempio n. 23
0
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                var novoUsuario = new UsuarioAplicacao();
                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;


                var usuario = await this.UserManager.FindByEmailAsync(modelo.Email);

                var usuarioJaExiste = usuario != null;

                if (usuarioJaExiste)
                {
                    return(View("AguardandoConfirmacao"));
                }

                var identityResult = await this.UserManager.CreateAsync(novoUsuario, modelo.Senha);

                if (identityResult.Succeeded)
                {
                    //send the email confirmation
                    await this.EnviarEmailDeConfirmacao(novoUsuario);

                    return(View("AguardandoConfirmacao"));
                }
                else
                {
                    AdicionaErros(identityResult);
                }
            }
            //alguma coisa aconteceu de errado.
            return(View(modelo));
        }
 public ActionResult Registrar(ContaRegistrarViewModel modelo)
 {
     return(View());
 }
        public async Task <ActionResult> Registrar(ContaRegistrarViewModel modelo)
        {
            if (ModelState.IsValid)
            {
                //dbCOntext do Identity com EF
                //camada imediata é a de Acesso aos Dados (Data Access Layer) no caso é o Entity Framework
                //mas poderia ser um SQL, um MongoDB entre outros
                //var dbContext = new IdentityDbContext<UsuarioAplicacao>("DefaultConnection");

                //classe que gera essa interface entre o Identity e o banco de dados
                //tilizada para manipular os usuários dentro do Identity Framework
                //var userStore = new UserStore<UsuarioAplicacao>(dbContext);

                //(termo em inglês para "gerenciamento") menos específica e desacopla e pertence ao Identity (não ao EntityFramework)
                //var userManager = new UserManager<UsuarioAplicacao>(userStore);

                //             ### AGORA TRABALHANDO COM OWIN ####

                if (!ModelState.IsValid)
                {
                    return(View(modelo));
                }

                var usuario = await UserManager.FindByEmailAsync(modelo.Email);

                var novoUsuario = new UsuarioAplicacao();

                novoUsuario.Email        = modelo.Email;
                novoUsuario.UserName     = modelo.UserName;
                novoUsuario.NomeCompleto = modelo.NomeCompleto;

                var UsuarioJaExiste = usuario != null;

                if (UsuarioJaExiste)
                {
                    return(View("AguardandoConfirmacao"));
                }

                var resultado = await UserManager.CreateAsync(novoUsuario, modelo.Senha);

                if (resultado.Succeeded)
                {
                    // Enviar o email de confirmação
                    await EnviarEmailDeConfirmacaoAsync(novoUsuario);

                    return(View("AguardandoConfirmacao"));
                }
                else
                {
                    AdicionaErros(resultado);
                }

                //dbContext.Users.Add(novoUsuario);  trabalha com EntityFramework (muito acoplado)
                //dbContext.SaveChanges(); trabalha com EntityFramework (muito acoplado)

                // Podemos incluir o usuario
            }

            // Alguma coisa de errado aconteceu!
            return(View(modelo));
        }