Ejemplo n.º 1
0
        public SubmitModule()
        {
            this.Get["/submit/{frageId:int}"] = o =>
            {
                user lUser = this.GetUserFromId(this.Request.Cookies["id"]);
                DynamicDictionary lQueryDictionary = this.Request.Query as DynamicDictionary;
                if (lQueryDictionary == null || lUser == null || !this.CheckIfCanAnswer(o.frageId, lUser) ||
                    (!lQueryDictionary.ContainsKey("answer") && !lQueryDictionary.ContainsKey("alt_answer")))
                    return this.Response.AsRedirect("/").WithCookie("error", "true");

                using (umfrageDB db = new umfrageDB())
                {
                    answer lLog = new answer
                    {
                        FrageId = o.frageId,
                        AnswerId = lQueryDictionary.ContainsKey("alt_answer") ? -1 : lQueryDictionary["answer"],
                        UserId = lUser.AuthenticationId
                    };
                    if (lQueryDictionary.ContainsKey("alt_answer"))
                        lLog.AltAntwort = lQueryDictionary["alt_answer"];

                    db.Insert(lLog);
                }

                return this.Response.AsRedirect("/");
            };
        }
        public dynamic Process(NancyModule nancyModule, AuthenticateCallbackData model)
        {
            string lLoginCookie = new Tuple<object, object>(model.AuthenticatedClient.GetHashCode(),
                DateTime.Now.GetHashCode()).GetHashCode().ToString();

            using (umfrageDB db = new umfrageDB())
            {
                string lAuthHash =
                    MD5.Create()
                        .ComputeHash(Encoding.UTF8.GetBytes(model.AuthenticatedClient.UserInformation.Id))
                        .ToHex(false);

                if ((from p in db.users
                    where p.AuthenticationId == lAuthHash
                    select p).Any())
                {
                    db.users.Where(user => user.AuthenticationId == lAuthHash)
                        .Set(user => user.Guid, lLoginCookie).Set(user => user.LastLogin, DateTime.Now)
                        .Update();
                }
                else
                {
                    user lUser = new user
                    {
                        AuthenticationId = lAuthHash,
                        Guid = lLoginCookie,
                        TimeCreated = DateTime.Now,
                        LastLogin = DateTime.Now
                    };
                    db.Insert(lUser);
                }
            }

            return nancyModule.Response.AsRedirect("/").WithCookie("id", lLoginCookie);
        }