/// <summary> /// Проверка, доступна ли страница requested_page для пользователя user_login. /// Проверка выполняется по группам, в котрые входит пользователь. /// </summary> /// <param name="user_login"></param> /// <param name="requested_page"></param> /// <returns></returns> public bool CheckUserPageAccess(string user_login, string requested_page) { using (SecurityDBEntities db = new SecurityDBEntities()) { // FirsrOrDefault() для типа bool при отсутствии результата вернет false bool _is_user_admin = (from ua in db.Users where (ua.LOGIN == user_login) select ua.IS_ADMIN).FirstOrDefault(); // Если пользователь является тотальным администратором, то ему доступно все и всегда. if (_is_user_admin) return true; // В случае когда пользователь не тотальный администратор, то проверяем роли у этого пользователя // и доступна ли данная страница для групп, в которые входит данный пользователь. int _page = (from u in db.Users join g in db.UsersInAccessGroups on u.USER_ID equals g.USER_ID join gp in db.AccessPagesInAccessGroups on g.ACCESSGROUP_ID equals gp.ACCESSGROUP_ID join p in db.AccessPages on gp.ACCESSPAGE_ID equals p.ACCESSPAGE_ID where (u.LOGIN == user_login && p.NAME == requested_page) select p.NAME).Count(); // Если хотябы в одной роли страница доступна, то разрешаем показ страницы пользователю if (_page > 0) return true; else return false; } }
/// <summary> /// Добавление пользователю группы по USER_ID пользователя /// и по ACCESSGROUP_ID группы /// </summary> /// <param name="user_id"></param> /// <param name="accessgroup_id"></param> /// <returns></returns> public void AddUserInAccessGroup(Int64 user_id, Int64 accessgroup_id) { using (SecurityDBEntities db = new SecurityDBEntities()) { UsersInAccessGroups userinaccessgroup = new UsersInAccessGroups(); userinaccessgroup.USER_ID = user_id; userinaccessgroup.ACCESSGROUP_ID = accessgroup_id; db.AddToUsersInAccessGroups(userinaccessgroup); db.SaveChanges(); } }
/// <summary> /// Добавление пользователю группы по логину пользователя /// и по ACCESSGROUP_ID группы /// </summary> /// <param name="user_login"></param> /// <param name="accessgroup_id"></param> /// <returns></returns> public void AddUserInAccessGroup(String user_login, Int64 accessgroup_id) { using (SecurityDBEntities db = new SecurityDBEntities()) { long user_id = (from u in db.Users where (u.LOGIN == user_login) select u.USER_ID).First(); UsersInAccessGroups userinaccessgroup = new UsersInAccessGroups(); userinaccessgroup.USER_ID = user_id; userinaccessgroup.ACCESSGROUP_ID = accessgroup_id; db.AddToUsersInAccessGroups(userinaccessgroup); db.SaveChanges(); } }
public MembershipUser CreateUser(string first_name, string last_name, string username, string password, string email) { using (SecurityDBEntities db = new SecurityDBEntities()) { Users user = new Users(); user.LOGIN = username; user.FIRST_NAME = first_name; user.LAST_NAME = last_name; user.EMAIL = email; user.PASSWORD_SALT = CreateSalt(); user.PASSWORD = CreatePasswordHash(password,user.PASSWORD_SALT); user.CREATE_DATE = DateTime.Now; user.IS_ACTIVATED = false; user.IS_LOCKED_OUT = false; user.LAST_LOCKED_OUT_DATE = DateTime.Now; user.LAST_LOGIN_DATE = DateTime.Now; db.AddToUsers(user); db.SaveChanges(); return GetUser(username); } }
public bool ValidateUser(string username, string password) { using (SecurityDBEntities db = new SecurityDBEntities()) { var result = from u in db.Users where (u.LOGIN == username) select u; if (result.Count() != 0) { var dbuser = result.First(); if (dbuser.PASSWORD == CreatePasswordHash(password, dbuser.PASSWORD_SALT)) { return true; } else return false; } else { return false; } } }
/// <summary> /// Удаление у пользователю группы. /// </summary> /// <param name="uiag_id"></param> /// <returns></returns> public bool RemoveUserInAccessGroup(Int64 uiag_id) { try { using (SecurityDBEntities db = new SecurityDBEntities()) { UsersInAccessGroups deluaig = (from a in db.UsersInAccessGroups where (a.UIAG_ID == uiag_id) select a).First(); db.UsersInAccessGroups.DeleteObject(deluaig); db.SaveChanges(); return true; } } catch (Exception ex) { return false; // Ошибка пои удалении } }
public string GetUserNameByEmail(string email) { using (SecurityDBEntities db = new SecurityDBEntities()) { var result = from u in db.Users where (u.EMAIL == email) select u; if (result.Count() != 0) { var dbuser = result.FirstOrDefault(); return dbuser.LOGIN; } else { return ""; } } }
public MembershipUser GetUser(string username) { using (SecurityDBEntities db = new SecurityDBEntities()) { var result = from u in db.Users where (u.LOGIN == username) select u; if (result.Count() != 0) { var dbuser = result.FirstOrDefault(); string _username = dbuser.LOGIN; long _providerUserKey = dbuser.USER_ID; string _email = dbuser.EMAIL; string _passwordQuestion = ""; //string _comment = dbuser.Comments; bool _isApproved = dbuser.IS_ACTIVATED; bool _isLockedOut = dbuser.IS_LOCKED_OUT; DateTime _creationDate = dbuser.CREATE_DATE; DateTime _lastLoginDate = dbuser.LAST_LOGIN_DATE; DateTime _lastActivityDate = DateTime.Now; DateTime _lastPasswordChangedDate = DateTime.Now; DateTime _lastLockedOutDate = dbuser.LAST_LOCKED_OUT_DATE; MembershipUser user = new MembershipUser("NetTelcoMemProvider", _username, _providerUserKey, _email, _passwordQuestion, "", //_comment, _isApproved, _isLockedOut, _creationDate, _lastLoginDate, _lastActivityDate, _lastPasswordChangedDate, _lastLockedOutDate); return user; } else { return null; } } }
/// <summary> /// Удаление пользователя по USER_ID /// </summary> /// <param name="user_id"></param> /// <returns></returns> public bool DeleteUser(Int64 user_id) { try { using (SecurityDBEntities db = new SecurityDBEntities()) { Users del_user = (from a in db.Users where (a.USER_ID == user_id) select a).First(); db.Users.DeleteObject(del_user); db.SaveChanges(); return true; } } catch (Exception ex) { return false; // Ошибка при удалении } }