コード例 #1
0
 public ClmUser(ONLuser usr, string provider) :
     base(provider, usr.iid, usr.iid, usr.email,
          "", "", true, false, DateTime.MinValue, DateTime.MinValue,
          DateTime.MinValue, DateTime.MinValue, DateTime.MinValue)
 {
     this.usr = usr;
 }
コード例 #2
0
        public static void AddUserToCompetition(this ONLuser user, long compID, string role = Constants.ROLE_USER)
        {
            bool exists = (dc.ONLuserRoles.Count(r => r.user_id == user.iid &&
                                                 r.comp_id == compID &&
                                                 r.role_id == role) > 0);

            if (!exists)
            {
                long newID;
                try { newID = dc.ONLuserRoles.OrderByDescending(r => r.iid).First().iid + 1; }
                catch { newID = 1; }
                ONLuserRole newRole = ONLuserRole.CreateONLuserRole(newID, user.iid, role);
                newRole.notifSent = String.Empty;
                newRole.comp_id   = compID;
                dc.ONLuserRoles.AddObject(newRole);
                dc.SaveChanges();
            }
            var toDelList1 = from r in dc.ONLuserRoles
                             where r.user_id == user.iid &&
                             r.comp_id == compID &&
                             r.role_id != role
                             select r;

            if (toDelList1.Count() < 1)
            {
                return;
            }
            var td = toDelList1.ToArray();

            for (int i = 0; i < td.Length; i++)
            {
                dc.ONLuserRoles.DeleteObject(td[i]);
            }
            dc.SaveChanges();
        }
コード例 #3
0
        public override bool DeleteUser(string username, bool deleteAllRelatedData)
        {
            ONLuser u = getONLUserByIid(username);

            if (u == null)
            {
                return(false);
            }
            dc.ONLusers.DeleteObject(u);
            dc.SaveChanges();
            return(true);
        }
コード例 #4
0
        public override MembershipUser GetUser(string username, bool userIsOnline)
        {
            var usrC = from u in dc.ONLusers
                       where u.iid == username
                       select u;

            if (usrC.Count() < 1)
            {
                return(null);
            }
            ONLuser usr = usrC.First();

            return(new ClmUser(usr, Name));
        }
コード例 #5
0
        public static void RemoveUserFromCompetition(this ONLuser user, long compID, string role = null)
        {
            var roleList = from r in dc.ONLuserRoles
                           where r.user_id == user.iid &&
                           r.comp_id == compID
                           select r;

            if (!String.IsNullOrEmpty(role))
            {
                roleList = roleList.Where(r => r.role_id == role);
            }
            if (roleList.Count() < 1)
            {
                return;
            }
            var rL = roleList.ToArray();

            for (int i = 0; i < rL.Length; i++)
            {
                dc.ONLuserRoles.DeleteObject(rL[i]);
            }
            dc.SaveChanges();
        }
コード例 #6
0
        public static bool IsInRole(this ONLuser user, long compID, string role)
        {
            bool isDBAdmin = (dc.ONLuserRoles.Count(r => r.user_id == user.iid && r.role_id == Constants.ROLE_ADMIN_ROOT) > 0);

            if (isDBAdmin)
            {
                return(true);
            }
            string[] roleToCheck;
            if (role == Constants.ROLE_ADMIN)
            {
                roleToCheck = new string[] { Constants.ROLE_ADMIN }
            }
            ;
            else
            {
                roleToCheck = new string[] { Constants.ROLE_ADMIN, Constants.ROLE_USER }
            };

            return(dc.ONLuserRoles.Count(r => r.user_id == user.iid &&
                                         r.comp_id == compID &&
                                         roleToCheck.Contains(r.role_id)) > 0);
        }
コード例 #7
0
        protected void btnChange_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(lblIid.Text))
            {
                lblMessage.Text = "Пользователь не выбран";
                return;
            }
            int?teamId;

            if (cbTeams.SelectedValue == "")
            {
                teamId = null;
            }
            else
            {
                int nTmp;
                if (!int.TryParse(cbTeams.SelectedValue, out nTmp))
                {
                    lblMessage.Text = "Команда выбрана неверно.";
                    return;
                }
                teamId = nTmp;
            }
            try
            {
                MembershipUser usr = Membership.GetUser(lblIid.Text);
                if (!(usr is ClmUser))
                {
                    lblMessage.Text = "Ошибка обновления пользователя. Пользователь не найден";
                    return;
                }
                ClmUser cUser = (ClmUser)usr;
                cUser.Email       = tbEmail.Text;
                cUser.Usr.name    = tbName.Text;
                cUser.Usr.team_id = teamId;
                Membership.UpdateUser(cUser);

                lblMessage.Text = "Пользователь обновлён";

                if (!rbListCompProperties.SelectedValue.Equals(Constants.ROLE_ADMIN_ROOT) &&
                    dc.ONLuserRoles.Count(r => r.role_id == Constants.ROLE_ADMIN_ROOT) < 2)
                {
                    lblMessage.Text += "; Оставлен статус администратора БД";
                    RefreshUserList();
                }

                ONLuser u = GetUserByIid(lblIid.Text);
                if (u == null)
                {
                    return;
                }
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = cn;
                cmd.Parameters.Add("@uid", SqlDbType.VarChar, 3);
                cmd.Parameters[0].Value = u.iid;
                if (User.IsInRole(Constants.ROLE_ADMIN_ROOT) && rbListCompProperties.SelectedValue.Equals(String.Empty) && CurrentCompetition == null)
                {
                    cmd.CommandText = "DELETE FROM ONLuserRoles WHERE user_id = @uid";
                    cmd.ExecuteNonQuery();
                }
                else
                {
                    if (rbListAdminProperties.Visible)
                    {
                        switch (rbListAdminProperties.SelectedValue)
                        {
                        case Constants.ROLE_ADMIN_ROOT:
                            if (!Roles.IsUserInRole(lblIid.Text, Constants.ROLE_ADMIN_ROOT))
                            {
                                Roles.AddUserToRole(lblIid.Text, Constants.ROLE_ADMIN_ROOT);
                            }
                            break;

                        default:
                            if (Roles.IsUserInRole(lblIid.Text, Constants.ROLE_ADMIN_ROOT))
                            {
                                Roles.RemoveUserFromRole(lblIid.Text, Constants.ROLE_ADMIN_ROOT);
                            }
                            break;
                        }
                    }
                    if (rbListCompProperties.Visible)
                    {
                        switch (rbListCompProperties.SelectedValue)
                        {
                        case Constants.ROLE_ADMIN:
                            u.AddUserToCompetition(compID, Constants.ROLE_ADMIN);
                            if (u.team_id != null)
                            {
                                u.ONLteam.AddTeamToCompetition(compID);
                            }
                            break;

                        case Constants.ROLE_USER:
                            u.AddUserToCompetition(compID, Constants.ROLE_USER);
                            if (u.team_id != null)
                            {
                                u.ONLteam.AddTeamToCompetition(compID);
                            }
                            break;

                        default:
                            u.RemoveUserFromCompetition(compID);
                            break;
                        }
                    }
                }
                RefreshUserList();
            }
            catch
            {
                lblMessage.Text = "Ошибка обновления пользователя.";
            }
        }
コード例 #8
0
        public MembershipUser CreateUser(string username, string password, string email, int?teamID, string chief, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
        {
            ValidatePasswordEventArgs e = new ValidatePasswordEventArgs(username, password, true);

            OnValidatingPassword(e);
            if (e.Cancel)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }
            if (RequiresUniqueEmail && !String.IsNullOrEmpty(GetUserNameByEmail(email)))
            {
                status = MembershipCreateStatus.DuplicateEmail;
                return(null);
            }

            if (!(providerUserKey is string))
            {
                status = MembershipCreateStatus.InvalidProviderUserKey;
                return(null);
            }
            string newIid = (string)providerUserKey;

            if (newIid.Length > 3)
            {
                newIid = newIid.Substring(0, 3);
            }
            if (GetUser(newIid, false) != null)
            {
                status = MembershipCreateStatus.DuplicateUserName;
                return(null);
            }
            try
            {
                ONLuser u = ONLuser.CreateONLuser(newIid, username, password, String.Empty);
                u.team_id      = teamID;
                u.email        = email;
                u.chief        = chief;
                u.creationDate = DateTime.UtcNow;
                dc.ONLusers.AddObject(u);
                dc.SaveChanges();

                status = MembershipCreateStatus.Success;
                try
                {
                    if (!String.IsNullOrEmpty(email))
                    {
                        string      str;
                        MailService ms = new MailService(dc, -1);
                        ms.SendMail(email, "Учетная запись",
                                    "Создана учётная запись в системе подачи заявок на соревнования по скалолазанию.\r\n" +
                                    "Ваш регион: " + username + "\r\n" +
                                    "Ваш пароль: " + password + "\r\n\r\n" +
                                    "С Уважением, Администратор системы.",
                                    System.Net.Mail.MailPriority.Normal,
                                    out str);
                    }
                }
                catch { }
                return(GetUser(newIid, false));
            }
            catch (Exception)
            {
                status = MembershipCreateStatus.ProviderError;
                return(null);
            }
        }
コード例 #9
0
 public static bool IsInRoleExclusive(this ONLuser user, long compID, string role)
 {
     return(dc.ONLuserRoles.Count(r => r.user_id == user.iid &&
                                  r.comp_id == compID &&
                                  r.role_id == role) > 0);
 }