public bool verificaUsuarioExiste(UsuarioSala usuarioSalaAcesso)
        {
            //verifica se usuario que tenta acessar existe
            var usuarioExiste = db.UsuarioSalas.Any(x => x.idTcsUsuario == usuarioSalaAcesso.idTcsUsuario);

            return(usuarioExiste);
        }
        public bool validarExiste(UsuarioSala usuarioSalaAcesso)
        {
            //verifca se usuaria já esta criado
            var verificaUser = db.UsuarioSalas.Any(x => (usuarioSalaAcesso.emailUsuario == x.emailUsuario || usuarioSalaAcesso.idTcsUsuario == x.idTcsUsuario));

            return(verificaUser);
        }
        public ActionResult RecuperaSenha(UsuarioSala usuarioSalaAcesso)
        {
            var idTcs     = usuarioSalaAcesso.idTcsUsuario;
            var dbUsuario = db.UsuarioSalas.Where(x => x.idTcsUsuario == idTcs).First();

            if (dbUsuario.respostaSeguranca1 == usuarioSalaAcesso.respostaSeguranca1 || dbUsuario.respostaSeguranca2 == usuarioSalaAcesso.respostaSeguranca2)
            {
                if (usuarioSalaAcesso.respostaSeguranca1 == null)
                {
                    usuarioSalaAcesso.respostaSeguranca1 = dbUsuario.respostaSeguranca1;
                }
                if (usuarioSalaAcesso.respostaSeguranca2 == null)
                {
                    usuarioSalaAcesso.respostaSeguranca2 = dbUsuario.respostaSeguranca2;
                }
                usuarioSalaAcesso.acessoUsu  = false;
                usuarioSalaAcesso.pwdUsuario = GetPassword();
                dbUsuario.pwdUsuario         = CriptografarSenha(usuarioSalaAcesso.pwdUsuario);
                dbUsuario.acessoUsu          = usuarioSalaAcesso.acessoUsu;
                db.Entry(dbUsuario).State    = EntityState.Modified;
                db.SaveChanges();
                TempData["mensagem-title"] = usuarioSalaAcesso.pwdUsuario.ToString();
                TempData["mensagem-info"]  = "lembre-se esta sera sua nova senha";
                return(RedirectToAction("Login"));
            }
            else
            {
                TempData["mensagem-title"] = "As perguntas foram respondidas incorretamente!";
                TempData["mensagem-erro"]  = "Errou...!";
                return(View(usuarioSalaAcesso));
            }
        }
        public ActionResult Login(UsuarioSala usuarioSalaAcesso)
        {
            if (verificaUsuarioExiste(usuarioSalaAcesso))
            {
                var usuarioDados = db.UsuarioSalas.Where(x => x.idTcsUsuario == usuarioSalaAcesso.idTcsUsuario).First();
                if (validaAcesso(usuarioSalaAcesso))
                {
                    Session["UserID"]   = usuarioDados.idUsuSala.ToString();
                    Session["UserName"] = usuarioDados.nomeUsuario.ToString();
                    Session["Perfil"]   = usuarioDados.perfilUsuario.ToString();
                    Session["TcsID"]    = usuarioDados.idTcsUsuario.ToString();
                    if (!usuarioDados.acessoUsu)
                    {
                        Session["Acesso"] = "false";
                        return(RedirectToAction("NovaSenha", "UsuarioSalas", new { id = usuarioDados.idUsuSala }));
                    }
                    Session["Acesso"] = "true";
                    return(RedirectToAction("UserDashBoard"));
                }

                TempData["mensagem-title"] = "Senha fornecida";
                TempData["mensagem-erro"]  = "esta incorreta";
                return(this.View(usuarioSalaAcesso));
            }
            else
            {
                TempData["mensagem-title"] = "Usuário não existe";
                TempData["mensagem-erro"]  = "esta incorreto";
                return(this.View(usuarioSalaAcesso));
            }
        }
        //[AuthorizationFilter("Administrador")]
        public ActionResult Edit(UsuarioSala usuarioSala)
        {
            if (usuarioSala.idUsuSala == Convert.ToInt16(Session["UserID"].ToString()) || Session["Perfil"].ToString() == "Administrador")
            {
                usuarioSala.emailUsuario = usuarioSala.emailUsuario.Substring(0, usuarioSala.emailUsuario.IndexOf('@'));
                usuarioSala.emailUsuario = usuarioSala.emailUsuario + "@tcs.com";

                if (ModelState.IsValid)
                {
                    usuarioSala.pwdUsuario      = CriptografarSenha(usuarioSala.pwdUsuario);
                    db.Entry(usuarioSala).State = EntityState.Modified;
                    db.SaveChanges();
                    TempData["mensagem-title"] = "Usuário editado com sucesso";
                    TempData["mensagem"]       = "Tudo certo";
                    return(RedirectToAction("Index"));
                }
                TempData["mensagem-title"] = "Usuario não pode ser editado";
                TempData["mensagem-erro"]  = "Ooppss...!";
                return(RedirectToAction("Edit", usuarioSala));
            }
            else
            {
                TempData["mensagem-title"] = "Você não tem permissão";
                TempData["mensagem-erro"]  = "para editar!";
                return(RedirectToAction("Index", "ReservaSala"));
            }
        }
        public ActionResult Cadastro(UsuarioSala usuarioSalaAcesso)
        {
            usuarioSalaAcesso.emailUsuario = usuarioSalaAcesso.emailUsuario + "@tcs.com";
            usuarioSalaAcesso.confirmUsu   = false;

            if (!validarExiste(usuarioSalaAcesso))
            {
                usuarioSalaAcesso.acessoUsu = true;

                if (ModelState.IsValid)
                {
                    usuarioSalaAcesso.pwdUsuario = CriptografarSenha(usuarioSalaAcesso.pwdUsuario);
                    db.UsuarioSalas.Add(usuarioSalaAcesso);
                    db.SaveChanges();
                    TempData["mensagem-title"] = "Usuário cadastrado com sucesso";
                    TempData["mensagem"]       = "Tudo certo!";
                    return(RedirectToAction("Login"));
                }
                else
                {
                    TempData["mensagem-title"] = "Erro ao cadastrar Usuário";
                    TempData["mensagem-erro"]  = "Verifique os dados informados!";
                    return(RedirectToAction("Cadastro", usuarioSalaAcesso));
                }
            }
            TempData["mensagem-title"] = "Este usuário já existe";
            TempData["mensagem-erro"]  = "Oooppss..!s";
            return(RedirectToAction("Cadastro", usuarioSalaAcesso));
        }
        public ActionResult NovaSenha(int id)
        {
            UsuarioSala usuarioSalaAcesso = db.UsuarioSalas.Find(id);

            TempData["mensagem-title"]   = "Edite a sua nova senha de acesso";
            TempData["mensagem"]         = "lembre-se esta sera sua nova senha";
            usuarioSalaAcesso.pwdUsuario = "";
            return(View(usuarioSalaAcesso));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            UsuarioSala usuarioSala = db.UsuarioSalas.Find(id);

            db.UsuarioSalas.Remove(usuarioSala);
            db.SaveChanges();
            TempData["mensagem-title"] = "Usuario deletado com sucesso";
            TempData["mensagem"]       = "Tudo certo!";
            return(RedirectToAction("Index"));
        }
        public ActionResult Delete(int id)
        {
            UsuarioSala usuarioSala = db.UsuarioSalas.Find(id);

            if (usuarioSala == null)
            {
                return(HttpNotFound());
            }
            return(View(usuarioSala));
        }
        public JsonResult DetalhesUsuario(int IdUser)
        {
            UsuarioSala user = new UsuarioSala();

            if (IdUser > 0)
            {
                user = db.UsuarioSalas.Find(IdUser);
            }

            return(Json(user));
        }
        // GET: UsuarioSalas/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            UsuarioSala usuarioSala = db.UsuarioSalas.Find(id);

            if (usuarioSala == null)
            {
                return(HttpNotFound());
            }
            return(View(usuarioSala));
        }
        public ActionResult Cadastro()
        {
            UsuarioSala usuarioSalaAcesso = new UsuarioSala();

            usuarioSalaAcesso.perfilUsuario = "Usuário";
            usuarioSalaAcesso.acessoUsu     = false;

            List <SelectListItem> listaPergunta_um = new List <SelectListItem>();

            listaPergunta_um.Add(new SelectListItem
            {
                Text  = "Nome do animal de estimação?",
                Value = "Nome do animal de estimação"
            });
            listaPergunta_um.Add(new SelectListItem
            {
                Text  = "Cidade onde nasceu?",
                Value = "Cidade onde nasceu"
            });
            listaPergunta_um.Add(new SelectListItem
            {
                Text  = "Heroi preferido na infância?",
                Value = "Heroi preferido na infância"
            });

            ViewBag.PergUm = listaPergunta_um;

            List <SelectListItem> listaPergunta_dois = new List <SelectListItem>();

            listaPergunta_dois.Add(new SelectListItem
            {
                Text  = "Filme favorito?",
                Value = "Filme favorito"
            });
            listaPergunta_dois.Add(new SelectListItem
            {
                Text  = "Professor(a) preferido?",
                Value = "Professor(a) preferido"
            });
            listaPergunta_dois.Add(new SelectListItem
            {
                Text  = "Doce ou salgado preferido?",
                Value = "Doce ou salgado preferido"
            });

            ViewBag.PergDois = listaPergunta_dois;

            Session["Acesso"] = "false";
            return(View(usuarioSalaAcesso));
        }
 public ActionResult NovaSenha(UsuarioSala usuarioSalaAcesso)
 {
     if (ModelState.IsValid)
     {
         usuarioSalaAcesso.acessoUsu       = true;
         usuarioSalaAcesso.pwdUsuario      = CriptografarSenha(usuarioSalaAcesso.pwdUsuario);
         db.Entry(usuarioSalaAcesso).State = EntityState.Modified;
         db.SaveChanges();
         Session["Acesso"]          = "true";
         TempData["mensagem-title"] = "Senha modificada com sucesso";
         TempData["mensagem"]       = "Tudo certo";
         return(RedirectToAction("Index", "ReservaSalas"));
     }
     TempData["mensagem-title"] = "Senha não pode ser modificada";
     TempData["mensagem-erro"]  = "Ooppss...!";
     return(RedirectToAction("NovaSenha", usuarioSalaAcesso));
 }
        public bool validaAcesso(UsuarioSala usuarioSalaAcesso)
        {
            var idTcs         = usuarioSalaAcesso.idTcsUsuario;
            var dbUsuario     = db.UsuarioSalas.Where(x => x.idTcsUsuario == idTcs).First();
            var senhaBanco    = db.UsuarioSalas.Find(dbUsuario.idUsuSala).pwdUsuario;
            var senhaDigitada = usuarioSalaAcesso.pwdUsuario;

            //verifica senha de acesso
            var usuario = db.UsuarioSalas.Any(x => (usuarioSalaAcesso.idTcsUsuario == x.idTcsUsuario /*&& usuarioSalaAcesso.pwdUsuario == x.pwdUsuario*/));
            var senha   = VerificarSenha(senhaDigitada, senhaBanco);

            if (usuario && senha)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public ActionResult RecuperaSenha(int id)
        {
            var idTcs    = id.ToString();
            var resposta = db.UsuarioSalas.Any(x => x.idTcsUsuario == idTcs);

            if (resposta)
            {
                UsuarioSala usuarioSalaAcesso = db.UsuarioSalas.Where(x => x.idTcsUsuario == idTcs).First();
                usuarioSalaAcesso.respostaSeguranca1 = "";
                usuarioSalaAcesso.respostaSeguranca2 = "";
                TempData["mensagem-title"]           = "Preencha uma ou mais das perguntas";
                TempData["mensagem"] = "corretamente, assim uma nova senha sera gerada";
                Session["Acesso"]    = "false";
                return(View(usuarioSalaAcesso));
            }
            else
            {
                TempData["mensagem-title"] = "Este usuário não existe";
                TempData["mensagem-erro"]  = "Oooppss..!";
                Session["Acesso"]          = "login";
                return(RedirectToAction("Login"));
            }
        }
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            //Quando for AllowAnonymousAttribute ele permite acessar independente da autorização
            if (filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true) ||
                filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true))
            {
                return;
            }

            int userId = HttpContext.Current.Session["UserID"] == null ? 0 : int.Parse(HttpContext.Current.Session["UserID"].ToString());

            // Check for authorization
            if (userId == 0)
            {
                filterContext.Result = new RedirectResult("~/UsuarioSalas/Login");
            }

            Models.ReservaSalaContext db = new Models.ReservaSalaContext();

            UsuarioSala usuario = db.UsuarioSalas.FirstOrDefault(u => u.idUsuSala == userId);

            if (usuario == null)
            {
                filterContext.Result = new RedirectResult("~/UsuarioSalas/Login");
                return;
            }

            if (permissoes.Contains(usuario.perfilUsuario))
            {
                return;//tem acesso
            }
            else if (permissoes.Length > 0)
            {
                filterContext.Result = new RedirectResult("~/UsuarioSalas/SemAcesso");
                return;
            }
        }
        // GET: UsuarioSalas/Edit/5
        //[AuthorizationFilter("Administrador")]
        public ActionResult Edit(int id)
        {
            UsuarioSala usuarioSalaAcesso = db.UsuarioSalas.Find(id);

            if (usuarioSalaAcesso.idUsuSala == Convert.ToInt16(Session["UserID"].ToString()) || Session["Perfil"].ToString() == "Administrador")
            {
                //usuarioSalaAcesso.perfilUsuario = "Usuário";
                usuarioSalaAcesso.acessoUsu = true;

                List <SelectListItem> listItems = new List <SelectListItem>();
                listItems.Add(new SelectListItem
                {
                    Text  = "Administrador",
                    Value = "Administrador"
                });
                listItems.Add(new SelectListItem
                {
                    Text  = "Usuário",
                    Value = "Usuário"
                });

                ViewBag.Perfis = listItems;

                List <SelectListItem> listaPergunta_um = new List <SelectListItem>();
                listaPergunta_um.Add(new SelectListItem
                {
                    Text  = "Nome do animal de estimação?",
                    Value = "Nome do animal de estimação"
                });
                listaPergunta_um.Add(new SelectListItem
                {
                    Text  = "Cidade onde nasceu?",
                    Value = "Cidade onde nasceu"
                });
                listaPergunta_um.Add(new SelectListItem
                {
                    Text  = "Heroi preferido na infância?",
                    Value = "Heroi preferido na infância"
                });

                ViewBag.PergUm = listaPergunta_um;

                List <SelectListItem> listaPergunta_dois = new List <SelectListItem>();
                listaPergunta_dois.Add(new SelectListItem
                {
                    Text  = "Filme favorito?",
                    Value = "Filme favorito"
                });
                listaPergunta_dois.Add(new SelectListItem
                {
                    Text  = "Cidade onde vive atualmente?",
                    Value = "Cidade onde vive atualmente"
                });
                listaPergunta_dois.Add(new SelectListItem
                {
                    Text  = "Doce ou salgado preferido?",
                    Value = "Doce ou salgado preferido"
                });

                ViewBag.PergDois = listaPergunta_dois;

                if (usuarioSalaAcesso == null)
                {
                    return(HttpNotFound());
                }

                if (Session["Perfil"].ToString() == "Administrador")
                {
                    usuarioSalaAcesso.emailUsuario = usuarioSalaAcesso.emailUsuario.Substring(0, usuarioSalaAcesso.emailUsuario.IndexOf('@'));
                }

                usuarioSalaAcesso.respostaSeguranca1 = usuarioSalaAcesso.respostaSeguranca1.ToString();
                usuarioSalaAcesso.respostaSeguranca2 = usuarioSalaAcesso.respostaSeguranca2.ToString();
                usuarioSalaAcesso.pwdUsuario         = "";
                return(View(usuarioSalaAcesso));
            }

            TempData["mensagem-title"] = "Você não tem permissão";
            TempData["mensagem-erro"]  = "para editar!";
            return(RedirectToAction("Index", "ReservaSala"));
        }