public IActionResult Index(UserLoginViewModel userViewModel)
        {
            //Wenn kein model -> eigentlich technischer Fehler
            if (userViewModel == null)
            {
                userViewModel.NonTechnicalError = Const.ErrorConst.UnvollstaendigerUser;
                return(View("Index", userViewModel));
            }

            //User suchen
            var dbProvider = new Provider.MongoDbProvider();
            var userFromDb = dbProvider.GetUser(userViewModel.User.Name);

            //User nicht gefunden -> Fehler
            if (userFromDb == null)
            {
                userViewModel.NonTechnicalError = Const.ErrorConst.UngueltigerUserOderPwd;
                return(View("Index", userViewModel));
            }

            //Password passt nicht -> gleicher Fehler
            if (Provider.CryptoProvider.ComputeSha256Hash(userViewModel.User.Password)
                != userFromDb.Password)
            {
                userViewModel.NonTechnicalError = Const.ErrorConst.UngueltigerUserOderPwd;
                return(View("Index", userViewModel));
            }
            //Usercookie setzen
            SetUserCookie(userViewModel.User.Name);

            //Weiter zu Bucketlists
            return(Redirect("~/Home/BucketListOverview"));
        }
        /// <summary>
        /// holt user zu session aus cookie
        /// </summary>
        /// <returns>User zu Session</returns>
        protected User GetSignedInUser()
        {
            var userName = Request.Cookies["moviedbsiteusername"];
            var provider = new Provider.MongoDbProvider();

            return(provider.GetUser(userName));
        }
        public IActionResult CreateUser(UserLoginViewModel newUser)
        {
            var dbProvider = new Provider.MongoDbProvider();

            if (dbProvider.GetUser(newUser.User.Name) != null)
            {
                newUser.NonTechnicalError = Const.ErrorConst.NutzerExistiertSchon;
                return(View("CreateUser", newUser));
            }

            //Passwort hashen -> minimal security
            newUser.User.Password = Provider.CryptoProvider.ComputeSha256Hash(newUser.User.Password);

            dbProvider.AddAsync <User>(newUser.User, Const.MongoDbConst.CollectionUsers).Wait();
            SetUserCookie(newUser.User.Name);

            return(Redirect("Index"));
        }
        public String GetExistingUser(string userName)
        {
            var provider = new Provider.MongoDbProvider();

            return provider.GetUser(userName)?.ToString() ?? String.Empty;
        }