protected void btnAdd_Click(object sender, ImageClickEventArgs e) { lblMsg.Text = string.Empty; //轉成小寫 string id = txtId.Text.Trim().ToLower(); string nameInChinese = txtFullNameInChinese.Text.Trim(); string nameInEnglish = txtFullNameInEnglish.Text.Trim(); int IsAlive = int.Parse(rdbIsValidAccount.SelectedValue); int ShowInSalesStatistics = int.Parse(rdbShowInSalesStatistics.SelectedValue); string mobie = txtMobile.Text.Trim(); string ssid = txtSSID.Text.Trim(); string email = txtEmail.Text.Trim(); string address = txtAddress.Text.Trim(); LoginUserVO user = m_AuthService.GetLoginUserById(id); if (user != null) { lblMsg.Text = MsgVO.USER_ALREADY_EXIST; return; } else { LoginUserVO newUser = new LoginUserVO(); newUser.UserId = id; newUser.FullNameInChinese = nameInChinese; newUser.FullNameInEnglish = nameInEnglish; newUser.IsAlive = IsAlive; newUser.ShowInSalesStatistics = ShowInSalesStatistics; newUser.Mobile = mobie; newUser.SSID = ssid; newUser.Email = email; newUser.ContactAddress = address; newUser.Password = "******"; newUser.CreateDate = DateTime.Now; m_AuthService.CreateLoginUser(newUser); m_WebLogService.AddSystemLog(MsgVO.Action.新增, newUser); lblMsg.Text = MsgVO.INSERT_OK; clearInput(); LoadDataToUI(); } }
/// <summary> /// 更新後台使用者 /// </summary> /// <param name="loginUserVO">被更新的後台使用者</param> /// <returns>更新後的後台使用者</returns> public LoginUserVO UpdateLoginUser(LoginUserVO loginUserVO) { NHibernateDao.Update(loginUserVO); return loginUserVO; }
/// <summary> /// 刪除後台使用者 /// </summary> /// <param name="loginUserVO">被刪除的後台使用者</param> public void DeleteLoginUser(LoginUserVO loginUserVO) { NHibernateDao.Delete(loginUserVO); }
/// <summary> /// 新增後台使用者 /// </summary> /// <param name="loginUserVO">被新增的後台使用者</param> /// <returns>新增後的後台使用者</returns> public LoginUserVO CreateLoginUser(LoginUserVO loginUserVO) { NHibernateDao.Insert(loginUserVO); return loginUserVO; }
private bool PathHasRight(LoginUserVO loginUser, Uri uri, Dictionary<string, List<int>> pathFunc) { string url = uri.ToString(); foreach (string path in pathFunc.Keys) { if (url.IndexOf(path) != -1) { m_Log.Fatal(path.IndexOf(url)); IList<int> funIdList = pathFunc[path]; //判斷是否有此功能權限 if (loginUser.LoginRoleList != null && loginUser.LoginRoleList.Count > 0) { foreach (LoginRoleVO role in loginUser.LoginRoleList) { if (role.MenuFuncList != null && role.MenuFuncList.Count > 0) { foreach (MenuFuncVO roleMenuFunc in role.MenuFuncList) { foreach (int id in funIdList) { if (id == roleMenuFunc.MenuFuncId) { return true; } } } } } //若未有權限 則丟回false return false; } else { return false; } } } return true; }
/// <summary> /// 刪除後台使用者 /// </summary> /// <param name="loginUserVO">被刪除的後台使用者</param> public void DeleteLoginUser(LoginUserVO loginUserVO) { LoginUserDao.DeleteLoginUser(loginUserVO); }
/// <summary> /// 新增後台使用者 /// </summary> /// <param name="loginUserVO">被新增的後台使用者</param> /// <returns>新增後的後台使用者</returns> public LoginUserVO CreateLoginUser(LoginUserVO loginUserVO) { return LoginUserDao.CreateLoginUser(loginUserVO); }
/// <summary> /// 檢查使用者是否有此單一清單的權限 /// </summary> /// <param name="user"></param> /// <param name="subFunc"></param> /// <returns></returns> private bool UserHasMenuRight(LoginUserVO user, MenuFuncVO subFunc, Dictionary<int, LoginRoleVO> roleDic) { if (user.LoginRoleList != null && user.LoginRoleList.Count > 0) { foreach (LoginRoleVO role in user.LoginRoleList) { LoginRoleVO cacheRole = roleDic[role.RoleId]; if (RoleHasMenuRight(cacheRole, subFunc)) { return true; } } } return false; }
/// <summary> /// 更新後台使用者 /// </summary> /// <param name="loginUserVO">被更新的後台使用者</param> /// <returns>更新後的後台使用者</returns> public LoginUserVO UpdateLoginUser(LoginUserVO loginUserVO) { return LoginUserDao.UpdateLoginUser(loginUserVO); }
/// <summary> /// 判斷路徑是否有權限 /// </summary> /// <param name="loginUserVO">後台使用者</param> /// <param name="uri">路徑</param> /// <returns>路徑是否有權限 </returns> public bool PathHasAuth(LoginUserVO user, Uri uri) { string path = uri.ToString(); LoginUserVO loginUserVO = LoginUserDao.GetLoginUserById(user.UserId); IList<LoginRoleVO> loginRoleList = loginUserVO.LoginRoleList; HashSet<string> pathRightSet = new HashSet<string>(); foreach (LoginRoleVO role in loginRoleList) { IList<MenuFuncVO> menuFuncList = role.MenuFuncList; foreach (MenuFuncVO menuFunc in menuFuncList) { pathRightSet.Add(menuFunc.MainPath); if (menuFunc.FuncionPaths != null && menuFunc.FuncionPaths.Count > 0) { foreach (FunctionPathVO fpth in menuFunc.FuncionPaths) { if (!string.IsNullOrEmpty(fpth.Path)) { pathRightSet.Add(fpth.Path); } } } } } pathRightSet.Add("admin/index.aspx"); if (pathRightSet.Count > 0) { foreach (string rightPath in pathRightSet.ToArray<string>()) { if (path.IndexOf(rightPath) != -1) { return true; } } } return false; }
/// <summary> /// 判斷是否是admin /// </summary> /// <param name="loginUser"></param> /// <returns></returns> public bool IsAdmin(LoginUserVO user) { LoginUserVO loginUserVO = GetLoginUserById(user.UserId); IList<LoginRoleVO> loginRoleList = loginUserVO.LoginRoleList; foreach (LoginRoleVO role in loginRoleList) { if ("系統管理員".Equals(role.RoleName)) { return true; } } return false; }
/// <summary> /// 取得屬於這個User的權限的功能清單 /// </summary> /// <returns>屬於這個User的權限的功能清單</returns> public IList<MenuFuncVO> GetTopMenuFunc(LoginUserVO user, IList<MenuFuncVO> allMenu, Dictionary<int, LoginRoleVO> roleDic) { IList<MenuFuncVO> authMenuList = new List<MenuFuncVO>(); foreach (MenuFuncVO menu in allMenu) { if (menu.SubFuncs.Count > 0) { int i = 1; //判斷是否第一次執行 MenuFuncVO parentMenu = new MenuFuncVO(); foreach (MenuFuncVO subFunc in menu.SubFuncs) { if (UserHasMenuRight(user, subFunc, roleDic)) { if (i == 1) { parentMenu = menu; authMenuList.Add(parentMenu); parentMenu.SubFuncs = new List<MenuFuncVO>(); } parentMenu.SubFuncs.Add(subFunc); i++; } } } } return authMenuList; }
private void InitLoginRoleAndUser() { //建立後台角色 LoginRoleVO loginRoleVO = new LoginRoleVO("系統管理員"); loginRoleVO.MenuFuncList = m_AuthService.GetNotTopMenuFunc(); //角色功能權限 m_AuthService.CreateLoginRole(loginRoleVO); LoginRoleVO loginRoleVO2 = new LoginRoleVO("行銷人員"); loginRoleVO2.MenuFuncList = m_AuthService.GetNotTopMenuFunc().Where(m => !8.Equals(m.ParentMenu.MenuFuncId)).ToList(); //角色功能權限 m_AuthService.CreateLoginRole(loginRoleVO2); LoginUserVO loginUserVO = new LoginUserVO(); loginUserVO.UserId = "admin"; loginUserVO.Password = "******"; loginUserVO.FullNameInChinese = "系統管理者"; loginUserVO.FullNameInEnglish = "Administrator"; loginUserVO.LoginRoleList = new List<LoginRoleVO>(); loginUserVO.LoginRoleList.Add(loginRoleVO); loginUserVO.CreateDate = DateTime.Now; m_AuthService.CreateLoginUser(loginUserVO); LoginUserVO loginUserVO2 = new LoginUserVO(); loginUserVO2.UserId = "test"; loginUserVO2.Password = "******"; loginUserVO2.FullNameInChinese = "行銷人員"; loginUserVO2.FullNameInEnglish = "Administrator"; loginUserVO2.LoginRoleList = new List<LoginRoleVO>(); loginUserVO2.LoginRoleList.Add(loginRoleVO2); loginUserVO2.CreateDate = DateTime.Now; m_AuthService.CreateLoginUser(loginUserVO2); }