public bool ChangePassword(string username, string oldPassword, string newPassword)
 {
     using (ColorettaDataContext context = new ColorettaDataContext())
     {
         User user = context.Users.Where(u => u.Username.Equals(username.ToUpper()) || u.Email.Equals(username.ToUpper()))
                                  .SingleOrDefault();
         if (user == null)
         {
             return false;
         }
         else
         {
             if (user.Deleted == user.Created) { user.Deleted = null; }
             user.Password = newPassword;
             context.SubmitChanges();
             return true;
         }
     }
 }
 public Guid CreateGame()
 {
     using (ColorettaDataContext context = new ColorettaDataContext())
     {
         try
         {
             Coloretto.Services.Data.Game game = new Coloretto.Services.Data.Game()
                     {
                         Status = GameStates.Created.ToString(),
                         GameId = Guid.NewGuid(),
                         owner = CurrentUser,
                         Start = DateTime.Now
                     };
             game.GamePlayers.Add(new GamePlayer { GameId = game.GameId, Order = 0, Username = CurrentUser });
             context.Games.InsertOnSubmit(game);
             context.SubmitChanges();
             return game.GameId;
         }
         catch (Exception)
         {
             return Guid.Empty;
         }
     }
 }
        public byte[] JoinGame(Guid gameId)
        {
            using (ColorettaDataContext context = new ColorettaDataContext())
            {
                GameInfo alreadyInGame = GetMyGames().Where(info => info.GameId == gameId).SingleOrDefault();
                if (alreadyInGame != null)
                {

                }
                else
                {
                    _manager.JoinGame(gameId, CurrentUser);
                }
                return null;
            }
        }
 public IEnumerable<GameInfo> GetMyGames()
 {
     using (ColorettaDataContext context = new ColorettaDataContext())
     {
         var l = context.GamePlayers.Where(player => player.Username == CurrentUser && (player.Game.Status == GameStates.Created.ToString() || player.Game.Status == GameStates.InProgress.ToString()))
                                   .Select(p => new GameInfo
                                   {
                                       Players = p.Game.GamePlayers.Select(gp => gp.Username).ToList(),
                                       GameId = p.Game.GameId,
                                       State = (GameStates)Enum.Parse(typeof(GameStates), p.Game.Status, true),
                                       Creation = p.Game.Start,
                                       Owner = p.Game.owner
                                   })
                                   .ToList();
         return l;
     }
 }
Beispiel #5
0
    protected void Button_Signup_Click(object sender, EventArgs e)
    {
        bool hasProblem = false;
        if (TextBox_Username.Text.Trim().Length == 0)
        {
            TextBox_Username.BorderColor = Color.Red;
            Panel_UsernameMessage.Visible = true;
            Panel_UsernameMessage.Controls.Add(new Literal { Text = "* Username is a required field." });
            hasProblem = true;
        }

        if (TextBox_Email.Text.Trim().Length == 0)
        {
            TextBox_Email.BorderColor = Color.Red;
            Panel_EmailMessage.Visible = true;
            Panel_EmailMessage.Controls.Add(new Literal { Text = "* Email is a required field." });
            hasProblem = true;
        }
        else if (TextBox_Email.Text.Trim().Length < 3 || !TextBox_Email.Text.Trim().Contains('@') || !TextBox_Email.Text.Trim().Contains('.'))
        {
            TextBox_Email.BorderColor = Color.Red;
            Panel_EmailMessage.Visible = true;
            Panel_EmailMessage.Controls.Add(new Literal { Text = "* An email is required to receive a password." });
            hasProblem = true;
        }

        if (hasProblem)
        {
            return;
        }

        string password = System.Guid.NewGuid().ToString();
        MembershipCreateStatus status = MembershipCreateStatus.Success;
        MembershipUser user = Membership.CreateUser(TextBox_Username.Text, password, TextBox_Email.Text, null,null,true, out status);
        if (status == MembershipCreateStatus.DuplicateEmail)
        {
            TextBox_Email.BorderColor = Color.Red;
            Panel_EmailMessage.Visible = true;
            Panel_EmailMessage.Controls.Add(new Literal { Text = "* This email address already has an account." });
        }
        else if (status == MembershipCreateStatus.DuplicateUserName)
        {
            TextBox_Username.BorderColor = Color.Red;
            Panel_UsernameMessage.Visible = true;
            Panel_UsernameMessage.Controls.Add(new Literal { Text = "* Username is already taken." });
        }
        else if (status != MembershipCreateStatus.Success)
        {
            TextBox_Username.BorderColor = Color.Red;
            Panel_UsernameMessage.Visible = true;
            Panel_UsernameMessage.Controls.Add(new Literal { Text = "* There was a problem creating this user." });
        }
        else
        {
            if (!CheckBox_Updates.Checked)
            {
                using (ColorettaDataContext context = new ColorettaDataContext())
                {
                    User udb = context.Users.Where(u => u.Username.Equals(user.UserName.ToUpper())).Single();
                    udb.Newsletter = false;
                    context.SubmitChanges();
                }
            }

            string emailBody = string.Format(File.ReadAllText(MapPath("~/users/WelcomeEmail.txt")), TextBox_Username.Text, TextBox_Email.Text, password);
            SmtpClient client = new SmtpClient();
            client.Send("*****@*****.**", TextBox_Email.Text, "Coloretta account information", emailBody);

            MultiView1.ActiveViewIndex = 1;
        }
    }
 public override void Validate(string userName, string password)
 {
     using (ColorettaDataContext context = new ColorettaDataContext())
     {
         User user = GetUser(userName, false);
         if (user.Password == password && (user.Deleted == null || user.Deleted.Value == user.Created))
         {
             try
             {
                 AccessLog log = new AccessLog { Username = userName, AccessPoint = "WCF Service", LoginTime = DateTime.Now, Origination = "Unknown", Success = true, AccessLogId = Guid.NewGuid() };
                 context.AccessLogs.InsertOnSubmit(log);
                 context.SubmitChanges();
             }
             catch (Exception)
             {
             }
         }
         else
         {
             AccessLog log = new AccessLog { Username = userName, AccessPoint = "WCF Service", LoginTime = DateTime.Now, Origination = "Unknown", Success = false, Duration = new DateTimeOffset(DateTime.Now, TimeSpan.FromMilliseconds(0)) };
             context.AccessLogs.InsertOnSubmit(log);
             context.SubmitChanges();
             throw new FaultException(new FaultReason("Unable to verify username and password information."));
         }
     }
 }
 public bool ValidateUser(string username, string password)
 {
     using (ColorettaDataContext context = new ColorettaDataContext())
     {
         User user = context.Users.Where(u => u.Username.Equals(username.ToUpper().Trim()) || u.Email.Equals(username.ToUpper().Trim())).SingleOrDefault();
         if (user == null || (user.Deleted != null && user.Deleted != user.Created))
         {
             return false;
         }
         else
         {
             bool valid = user.Password.Equals(password.Trim());
             return valid;
         }
     }
 }
 public string GetPassword(string username, string answer)
 {
     using (ColorettaDataContext context = new ColorettaDataContext())
     {
         User user = context.Users.Where(u => u.Username.Equals(username.ToUpper().Trim()) || u.Email.Equals(username.ToUpper().Trim())).SingleOrDefault();
         if (user == null)
         {
             return null;
         }
         else
         {
             return user.Password;
         }
     }
 }
 public User GetUser(string username, bool userIsOnline)
 {
     using (ColorettaDataContext context = new ColorettaDataContext())
     {
         User user = context.Users.Where(u => u.Username.Equals(username.ToUpper().Trim()) || u.Email.Equals(username.ToUpper().Trim())).SingleOrDefault();
         return user;
     }
 }
        public IEnumerable<User> GetAllUsers(int pageIndex, int pageSize, out int totalRecords)
        {
            using (ColorettaDataContext context = new ColorettaDataContext())
            {
                context.ObjectTrackingEnabled = false;
                int userCount = context.Users.Where(u => u.Deleted == null).Count();
                totalRecords = userCount;

                int actualSkip = Math.Min(userCount, pageSize * pageIndex);
                int actualTake = Math.Min(userCount - (pageSize * pageIndex), pageSize);

                var users = context.Users.Where(u => u.Deleted == null).OrderBy(u => u.Username)
                                   .Skip(actualSkip)
                                   .Take(actualTake);

                return users.ToList();
            }
        }
        public IEnumerable<User> FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
        {
            using (ColorettaDataContext context = new ColorettaDataContext())
            {
                int userCount = context.Users.Where(u => u.Username.StartsWith(usernameToMatch.ToUpper())).Count();
                totalRecords = userCount;

                if (totalRecords == 0)
                {
                    return new List<User>(0);
                }

                // TODO: I know I'm not covering all scenerios. For now there will just be exceptions if I make stupid requests.
                int actualSkip = Math.Min(userCount, pageSize * pageIndex);
                int actualTake = pageSize;
                if (pageSize > totalRecords)
                    actualTake = totalRecords;

                var users = context.Users.Where(u => u.Username.StartsWith(usernameToMatch.ToUpper()))
                                   .Skip(actualSkip)
                                   .Take(actualTake);

                return users.ToList();
            }
        }
        public IEnumerable<User> FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
        {
            using (ColorettaDataContext context = new ColorettaDataContext())
            {
                int userCount = context.Users.Where(u => u.Email.StartsWith(emailToMatch.ToUpper())).Count();
                totalRecords = userCount;

                int actualSkip = Math.Max(userCount, pageSize * pageIndex);
                int actualTake = Math.Min(userCount - (pageSize * pageIndex), pageSize);

                var users = context.Users.Where(u => u.Email.StartsWith(emailToMatch.ToUpper()))
                                   .Skip(actualSkip)
                                   .Take(actualTake);

                return users.ToList();
            }
        }
        public bool DeleteUser(string username, bool deleteAllRelatedData)
        {
            using (ColorettaDataContext context = new ColorettaDataContext())
            {
                var user = context.Users.Where(u => u.Email.Equals(username.ToUpper().Trim()) || u.Username.Equals(username.ToUpper().Trim()))
                                        .FirstOrDefault();
                if (user == null)
                {
                    return false;
                }

                try
                {
                    if (deleteAllRelatedData)
                    {
                        context.Users.DeleteOnSubmit(user);
                        context.SubmitChanges();
                        return true;
                    }
                    else if (user.Deleted.HasValue == false)
                    {
                        user.Deleted = DateTime.UtcNow;
                        context.SubmitChanges();
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                catch (Exception ex)
                {
                    Debug.Fail("Unable to delete user as requested. (Full data purce == " + deleteAllRelatedData, ex.ToString());
                    return false;
                }
            }
        }
        public User CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
        {
            using (ColorettaDataContext context = new ColorettaDataContext())
            {
                string em = email.Trim();
                string uname = username.Trim();
                string passwd = password.Trim();

                if (uname.Length < 3)
                {
                    status = MembershipCreateStatus.InvalidUserName;
                    return null;
                }
                if (context.Users.Where(u => u.Username.Equals(uname.ToUpper()) || u.Email.Equals(uname.ToUpper())).Any())
                {
                    status = MembershipCreateStatus.DuplicateUserName;
                    return null;
                }
                else if (context.Users.Where(u => u.Email.Equals(em.ToUpper()) || u.Email.Equals(uname.ToUpper())).Any())
                {
                    status = MembershipCreateStatus.DuplicateEmail;
                    return null;
                }

                try
                {
                    DateTime creationDate = DateTime.Now;
                    User user = new User
                            {
                                Username = username.ToUpper(),
                                Password = password,
                                Email = email,
                                Newsletter = true,
                                Created = creationDate,
                                Deleted = creationDate,
                                DisplayName = username
                            };
                    context.Users.InsertOnSubmit(user);
                    status = MembershipCreateStatus.Success;
                    context.SubmitChanges();

                    return user;
                }
                catch
                {
                    Debug.Fail("Unable to insert player into database.");
                    status = MembershipCreateStatus.UserRejected;
                    return null;
                }
            }
        }