예제 #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));
        }
예제 #2
0
        public string ForgotPassword(int usuarioID)
        {
            using (NimbusAcad_DB_Entities db = new NimbusAcad_DB_Entities())
            {
                var usuario = db.RBAC_Usuario.Find(usuarioID);
                if (usuario != null)
                {
                    string newSalt           = SecurityMethods.GenerateSalt();
                    string newToken          = SecurityMethods.GenerateTempTokenAccess();
                    string newTokenEncrypted = SecurityMethods.HashPasswordPBKDF2(newToken, newSalt);

                    usuario.Senha_Hash      = newTokenEncrypted;
                    usuario.Salt            = newSalt;
                    db.Entry(usuario).State = EntityState.Modified;
                    db.SaveChanges();

                    return(newToken);
                }
                else
                {
                    return(string.Empty);
                }
            }
        }