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; }
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(); }
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); }
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)); }
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(); }
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); }
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 = "Ошибка обновления пользователя."; } }
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); } }
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); }