Exemplo n.º 1
0
        public async System.Threading.Tasks.Task <ActionResult> NovaPessoa([Bind(Include = "PrimeiroNome, Sobrenome, CPF, RG, Sexo, DtNascimento, TelPrincipal, TelOpcional, Email, CEP, Logradouro, Complemento, Numero, Bairro, Cidade, Estado, Pais, PerfilID")] RegistrarComumViewModel novaPessoa)
        {
            if (ModelState.IsValid)
            {
                //Criando pessoa
                int pID = _userStore.AddPessoa(novaPessoa);

                //Criando usuario
                RBAC_Usuario RU = new RBAC_Usuario();
                RU.Pessoa_ID = pID;
                RU.Username  = novaPessoa.Email;

                //Gernado Senha tempraria e salt
                string tempToken = SecurityMethods.GenerateTempTokenAccess();
                string tempSalt  = SecurityMethods.GenerateSalt();
                string tempPass  = SecurityMethods.HashPasswordPBKDF2(tempToken, tempSalt);

                //Criando usuario
                RU.Senha_Hash      = tempPass;
                RU.Salt            = tempSalt;
                RU.Dt_Criacao      = DateTime.Now.Date;
                RU.Dt_Ultima_Modif = DateTime.Now.Date;
                RU.Bloqueado       = false;

                db.RBAC_Usuario.Add(RU);
                db.SaveChanges();

                //Enviando Email da senha
                EmailMessage message = new EmailMessage(novaPessoa.Email, "Bem-vindo ao NimbusAcad!", "Olá, seja bem-vindo ao NimbusAcad \n Esta é sua senha: " + tempToken + "\nRecomenda-se que altere a senha para uma, com fácil memorização.");
                await _emailService.Send(message);

                //Enviando Email de confirmação de email
                var          callbackUrl = Url.Action("ConfirmarEmail", "Account", new { novaPessoa.Email }, null);
                EmailMessage confirmacao = new EmailMessage(novaPessoa.Email, "Confirmar email", "Por favor, confirme seu email clicando neste link: <a href=\"" + callbackUrl + "\">Confirmar</a>");
                await _emailService.Send(confirmacao);

                //Assimilando perfil de acesso
                int uID = _userStore.GetUsuarioID(novaPessoa.Email);
                //VinculoPerfilUsuarioViewModel VPUVM = new VinculoPerfilUsuarioViewModel();
                //VPUVM.UsuarioID = uID;
                //VPUVM.PerfilID = novaPessoa.PerfilID;
                RBAC_Link_Usuario_Perfil linkUP = new RBAC_Link_Usuario_Perfil();
                linkUP.Usuario_ID = uID;
                linkUP.Perfil_ID  = novaPessoa.PerfilID;
                _roleStore.AddUsuarioPerfil(linkUP);

                return(RedirectToAction("RegistrarDocumento", "Funcionario", new { id = pID }));
            }
            PopulatePerfilDropDownList(novaPessoa.PerfilID);
            return(View(novaPessoa));
        }