/// <summary>
 /// 验证用户
 /// </summary>
 /// <param name="systemID"></param>
 /// <param name="userName"></param>
 /// <param name="password"></param>
 /// <returns></returns>
 private bool ValidateUser(string userName, string password, out Auth_User loginUser)
 {
     try
     {
         var user = NH.Session.QueryOver <Auth_User>().Where(x => x.Name == userName && x.IsValid == true).List().FirstOrDefault();
         if (user == null)
         {
             throw new Exception("用户名不存在!");
         }
         if (user.Locked)
         {
             throw new Exception("用户名已被锁定!");
         }
         var encrypt_password = MD5Helper.MD5Encrypt64(password);
         if (user.Password == encrypt_password)
         {
             loginUser = user;
             return(true);
         }
         throw new Exception("密码有误!");
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
        Auth_User CreateUserForLester(RegistrationLesterRequest lesterModel, string passwordHash)
        {
            var userNew = new Auth_User()
            {
                CreatedTime  = DateTime.Now,
                PasswordHash = passwordHash,
                Email        = lesterModel.Email,
                PhoneNumber  = lesterModel.PhoneNumber,
                Status       = (int)EnumStatusUser.Approved,
            };

            if (!string.IsNullOrEmpty(lesterModel.Email))
            {
                userNew.UserName = lesterModel.Email;
            }
            else if (!string.IsNullOrEmpty(lesterModel.PhoneNumber))
            {
                userNew.UserName = lesterModel.PhoneNumber.Split('@').First();;
            }
            else
            {
                userNew.UserName = lesterModel.FacebookId;
            }
            return(_userService.InsertUserLester(userNew));
        }
        public virtual async void SignIn(Auth_User user, bool isPersistent)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }
            var claims = new List <Claim>();

            if (!string.IsNullOrEmpty(user.UserName))
            {
                claims.Add(new Claim(ClaimTypes.Name, user.UserName, ClaimValueTypes.String, MotelAuthenticationDefaults.ClaimsIssuer));
            }
            if (!string.IsNullOrEmpty(user.Email))
            {
                claims.Add(new Claim(ClaimTypes.Email, user.Email, ClaimValueTypes.Email, MotelAuthenticationDefaults.ClaimsIssuer));
            }
            var userIdentity  = new ClaimsIdentity(claims, MotelAuthenticationDefaults.AuthenticationScheme);
            var userPrincipal = new ClaimsPrincipal(userIdentity);

            var authenticationProperties = new AuthenticationProperties
            {
                IsPersistent = isPersistent,
                IssuedUtc    = DateTime.UtcNow
            };
            await _httpContextAccessor.HttpContext.SignInAsync(MotelAuthenticationDefaults.AuthenticationScheme, userPrincipal, authenticationProperties);

            //cache authenticated customer
            _cachedUser = user;
        }
        public ActivityLog InsertActivity(Auth_User customer, string systemKeyword, string comment, BaseEntity entity = null)
        {
            if (customer == null)
            {
                return(null);
            }

            //try to get activity log type by passed system keyword
            var activityLogType = GetAllActivityTypes().FirstOrDefault(type => type.SystemKeyword.Equals(systemKeyword));

            if (!activityLogType?.Enabled ?? true)
            {
                return(null);
            }

            //insert log item
            var logItem = new ActivityLog
            {
                ActivityLogTypeId = activityLogType.Id,
                EntityId          = entity?.Id,
                EntityName        = entity?.GetType().Name,
                CustomerId        = customer.Id,
                Comment           = CommonHelper.EnsureMaximumLength(comment ?? string.Empty, 4000),
                CreatedOnUtc      = DateTime.UtcNow,
                IpAddress         = _webHelper.GetCurrentIpAddress()
            };

            _activityLogRepository.Insert(logItem);

            //event notification
            _eventPublisher.EntityInserted(logItem);

            return(logItem);
        }
示例#5
0
        public ActionResult Create(Auth_User item)
        {
            IDbConnection db = new OrmliteConnection().openConn();

            try
            {
                if (!string.IsNullOrEmpty(item.UserID) &&
                    !string.IsNullOrEmpty(item.DisplayName) &&
                    !string.IsNullOrEmpty(item.FullName))
                {
                    var isExist = db.GetByIdOrDefault <Auth_User>(item.UserID);
                    item.Phone = !string.IsNullOrEmpty(item.Phone) ? item.Phone : "";
                    item.Email = !string.IsNullOrEmpty(item.Email) ? item.Email : "";
                    item.Note  = !string.IsNullOrEmpty(item.Note) ? item.Note : "";
                    if (userAsset.ContainsKey("Insert") && userAsset["Insert"] && item.RowCreatedAt == null && item.RowCreatedBy == null)
                    {
                        if (isExist != null)
                        {
                            return(Json(new { success = false, message = "Người dùng đã tồn tại." }));
                        }
                        item.Password     = SqlHelper.GetMd5Hash("123456");
                        item.RowCreatedAt = DateTime.Now;
                        item.RowCreatedBy = currentUser.UserID;
                        db.Insert <Auth_User>(item);
                        return(Json(new { success = true, UserID = item.UserID, RowCreatedAt = item.RowCreatedAt, RowCreatedBy = item.RowCreatedBy }));
                    }
                    else if (userAsset.ContainsKey("Update") && userAsset["Update"] && isExist != null)
                    {
                        item.Password     = isExist.Password;
                        item.RowUpdatedAt = DateTime.Now;
                        item.RowUpdatedBy = currentUser.UserID;


                        if (isExist.RowCreatedBy != "system")
                        {
                            db.Update <Auth_User>(item);
                        }
                        else
                        {
                            return(Json(new { success = false, message = "Dữ liệu này không cho chỉnh sửa liên hệ admin để biết thêm chi tiết" }));
                        }
                        return(Json(new { success = true }));
                    }
                    else
                    {
                        return(Json(new { success = false, message = "Bạn không có quyền" }));
                    }
                }
                else
                {
                    return(Json(new { success = false, message = "Chưa nhập giá trị" }));
                }
            }
            catch (Exception e)
            {
                log.Error("AD_User - Create - " + e.Message);
                return(Json(new { success = false, message = e.Message }));
            }
            finally { db.Close(); }
        }
        /// <summary>
        /// Sign out
        /// </summary>
        public virtual async void SignOut()
        {
            //reset cached customer
            _cachedUser = null;

            //and sign out from the current authentication scheme
            await _httpContextAccessor.HttpContext.SignOutAsync(MotelAuthenticationDefaults.AuthenticationScheme);
        }
示例#7
0
 public JwtTokensData CreateJwtTokensAsync(Auth_User user)
 {
     var(accessToken, claims) = createAccessTokenAsync(user);
     var(refreshTokenValue, refreshTokenSerial) = createRefreshToken();
     return(new JwtTokensData
     {
         AccessToken = accessToken,
         RefreshToken = refreshTokenValue,
         RefreshTokenSerial = refreshTokenSerial,
         Claims = claims
     });
 }
示例#8
0
        public void UpdateUser(Auth_User customer)
        {
            if (customer == null)
            {
                throw new ArgumentNullException(nameof(customer));
            }

            _userRepository.Update(customer);

            //event notification
            _eventPublisher.EntityUpdated(customer);
        }
示例#9
0
        public ActionResult Read([DataSourceRequest] DataSourceRequest request)
        {
            log4net.Config.XmlConfigurator.Configure();
            string whereCondition = "";

            if (request.Filters.Count > 0)
            {
                whereCondition = " AND " + new KendoApplyFilter().ApplyFilter(request.Filters[0]);
            }
            var data = new Auth_User().GetPage(request, whereCondition);

            return(Json(data));
        }
        public bool Authorize(Auth_Permission permission, Auth_User customer)
        {
            if (permission == null)
            {
                return(false);
            }

            if (customer == null)
            {
                return(false);
            }
            return(Authorize(permission.Permission, customer));
        }
        CustomPrincipal GetInforAuthorize(Auth_User user)
        {
            CustomPrincipal customPrincipal = new CustomPrincipal()
            {
                UserId      = user.Id,
                Avatar      = user.Avatar,
                FullName    = user.UserName,
                Roles       = _rolesUserServices.GetNameRoles(user.Id)?.ToArray(),
                Permissions = _userService.GetAllPermissonOfUser(user)?.Select(x => x.Permission)?.ToArray(),
            };

            return(customPrincipal);
        }
示例#12
0
        private void 添加toolStripButton1_Click(object sender, EventArgs e)
        {
            if (!CheckControl())
            {
                return;
            }

            //if (!m_personnerServer.AddPersonnelArchive(GetPersonnelArchiveData(), out error))
            //{
            //    MessageDialog.ShowPromptMessage(error);
            //    return;
            //}

            IQueryable <View_Auth_Role> authRole = m_roleManager.GetAllRoles();
            string roleCode = "";

            foreach (var item in authRole)
            {
                if (item.角色名称 == CE_RoleEnum.普通操作员.ToString())
                {
                    roleCode = item.角色编码;
                }
            }

            Auth_User userInfo = new Auth_User();

            userInfo.LoginName          = txtWorkID.Text.Trim();
            userInfo.Password           = "******";
            userInfo.TrueName           = txtName.Text.Trim();
            userInfo.Dept               = m_departmentServer.GetDeptCode(cmbDept.Text);
            userInfo.IsActived          = false;
            userInfo.IsAdmin            = false;
            userInfo.AuthenticationMode = "密码认证";
            userInfo.IsLocked           = false;
            userInfo.CreateDate         = ServerTime.Time;
            userInfo.DestroyFlag        = false;
            userInfo.Remarks            = "通过人员档案自动添加";

            if (m_userManager.AddUser(userInfo))
            {
                if (!m_roleManager.AddUserInRole(roleCode, txtWorkID.Text))
                {
                    MessageDialog.ShowPromptMessage("员工信档案添加成功,角色分配失败!");
                }
            }

            updateFlag = true;
            this.Close();
        }
示例#13
0
 public Auth_User InsertUserAdmin(Auth_User user)
 {
     try
     {
         user.CreatedTime = DateTime.Now;
         user.Status      = (int)EnumStatusUser.Approved;
         user.IsAdmin     = true;
         _userRepository.Insert(user);
         _eventPublisher.EntityInserted(user);
         return(user);
     }
     catch (Exception ex)
     {
         _logger.Error("UpdateCustomerPassword error", ex);
         return(null);
     }
 }
        public void AddUserToken(Auth_User user, string refreshTokenSerial, string accessToken, string refreshTokenSourceSerial)
        {
            var now   = DateTime.UtcNow;
            var token = new Auth_UserToken
            {
                UserId = user.Id,
                // Refresh token handles should be treated as secrets and should be stored hashed
                RefreshTokenIdHash       = _encryptionService.GetSha256Hash(refreshTokenSerial),
                RefreshTokenIdHashSource = string.IsNullOrWhiteSpace(refreshTokenSourceSerial) ?
                                           null : _encryptionService.GetSha256Hash(refreshTokenSourceSerial),
                AccessTokenHash             = _encryptionService.GetSha256Hash(accessToken),
                RefreshTokenExpiresDateTime = now.AddMinutes(_configuration.Value.RefreshTokenExpirationMinutes),
                AccessTokenExpiresDateTime  = now.AddMinutes(_configuration.Value.AccessTokenExpirationMinutes)
            };

            AddUserToken(token);
        }
        public Auth_User GetAuthenticatedCustomer()
        {
            if (_cachedUser != null)
            {
                return(_cachedUser);
            }
            var authenticateResult = _httpContextAccessor.HttpContext.AuthenticateAsync(MotelAuthenticationDefaults.AuthenticationScheme).Result;

            if (!authenticateResult.Succeeded)
            {
                return(null);
            }
            Auth_User user = null;

            if (_userSettings.UsernamesEnabled)
            {
                //try to get customer by username
                var usernameClaim = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name &&
                                                                           claim.Issuer.Equals(MotelAuthenticationDefaults.ClaimsIssuer, StringComparison.InvariantCultureIgnoreCase));
                if (usernameClaim != null)
                {
                    user = _userService.GetUserByUsername(usernameClaim.Value);
                }
            }
            else
            {
                //try to get customer by email
                var emailClaim = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Email &&
                                                                        claim.Issuer.Equals(MotelAuthenticationDefaults.ClaimsIssuer, StringComparison.InvariantCultureIgnoreCase));
                if (emailClaim != null)
                {
                    user = _userService.GetUserByEmail(emailClaim.Value);
                }
                if (user == null || (user.Status != (int)EnumStatusUser.Approved) || user.Deleted != (int)EnumStatusUser.Delete)
                {
                    return(null);
                }
            }
            _cachedUser = user;

            return(_cachedUser);
        }
        public bool Authorize(string auth_PermissionSystemName, Auth_User customer)
        {
            if (string.IsNullOrEmpty(auth_PermissionSystemName))
            {
                return(false);
            }
            if (Authorize(auth_PermissionSystemName, customer.Id, (int)ObjectTypeEnum.User))
            {
                return(true);
            }
            var userRoles = _userService.GetUserRoles(customer);

            foreach (var role in userRoles)
            {
                if (Authorize(auth_PermissionSystemName, role.Id, (int)ObjectTypeEnum.Role))
                {
                    return(true);
                }
            }
            return(false);
        }
示例#17
0
        public FileResult Export([DataSourceRequest] DataSourceRequest request)
        {
            ExcelPackage   pck = new ExcelPackage(new FileInfo(Server.MapPath("~/ExportTemplate/NguoiDung.xlsx")));
            ExcelWorksheet ws  = pck.Workbook.Worksheets["Data"];

            if (userAsset["Export"])
            {
                string whereCondition = "";
                if (request.Filters.Count > 0)
                {
                    whereCondition = " AND " + new KendoApplyFilter().ApplyFilter(request.Filters[0]);
                }
                IDbConnection db        = new OrmliteConnection().openConn();
                var           lstResult = new Auth_User().GetExport(request, whereCondition);
                int           rowNum    = 2;
                foreach (var item in lstResult)
                {
                    ws.Cells["A" + rowNum].Value = item.UserID;
                    ws.Cells["B" + rowNum].Value = item.DisplayName;
                    ws.Cells["C" + rowNum].Value = item.FullName;
                    ws.Cells["D" + rowNum].Value = item.Email;
                    ws.Cells["E" + rowNum].Value = item.Phone;
                    ws.Cells["F" + rowNum].Value = item.Note;
                    ws.Cells["G" + rowNum].Value = item.IsActive ? "Đang hoạt động" : "Ngưng hoạt động";
                    rowNum++;
                }
                db.Close();
            }
            else
            {
                ws.Cells["A2:E2"].Merge = true;
                ws.Cells["A2"].Value    = "You don't have permission to export data.";
            }
            MemoryStream output = new MemoryStream();

            pck.SaveAs(output);
            return(File(output.ToArray(),                                                    //The binary data of the XLS file
                        "application/vnd.ms-excel",                                          //MIME type of Excel files
                        "NguoiDung_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".xlsx")); //Suggested file name in the "Save as" dialog which will be displayed to the end user
        }
示例#18
0
        public ActionResult Registry(RegistryModel item)
        {
            IDbConnection db = new OrmliteConnection().openConn();

            try
            {
                var isExist = db.FirstOrDefault <Auth_User>(p => p.UserID == item.UserName);
                item.Phone    = !string.IsNullOrEmpty(item.Phone) ? item.Phone : "";
                item.Email    = !string.IsNullOrEmpty(item.Email) ? item.Email : "";
                item.UserName = !string.IsNullOrEmpty(item.UserName) ? item.UserName : "";
                if (isExist != null)
                {
                    return(Json(new { success = false, message = "Người dùng đã tồn tại" }));
                }
                var user = new Auth_User();
                user.UserID       = item.UserName;
                user.DisplayName  = item.UserName;
                user.Phone        = item.Phone;
                user.Email        = item.Email;
                user.IsActive     = true;
                user.FullName     = item.UserName;
                user.Password     = SqlHelper.GetMd5Hash(item.Password);
                user.RowCreatedAt = DateTime.Now;
                user.RowCreatedBy = "CustomerRegistry";
                user.Note         = "";
                db.Insert <Auth_User>(user);
                var detail = new Auth_UserInRole();
                detail.UserID       = item.UserName;
                detail.RoleID       = 3;
                detail.RowCreatedAt = DateTime.Now;
                detail.RowCreatedBy = "CustomerRegistry";
                db.Insert <Auth_UserInRole>(detail);
                return(Json(new { success = true, message = "Đăng ký thành công" }));
            }
            catch (Exception e)
            {
                return(Json(new { success = false, message = e.Message }));
            }
            finally { db.Close(); }
        }
示例#19
0
 public Auth_User InsertUserRetener(Auth_User user)
 {
     try
     {
         user.CreatedTime = DateTime.Now;
         user.Status      = (int)EnumStatusUser.Approved;
         _userRepository.Insert(user);
         _eventPublisher.EntityInserted(user);
         var roles     = _rolesServices.GetRoleByName(RoleDefault.RoleRetener);
         var usersRole = new Auth_UserRoles()
         {
             UserID = user.Id,
             RoleID = roles.Id
         };
         AddUserRoleMapping(usersRole);
         return(user);
     }
     catch (Exception ex)
     {
         _logger.Error("UpdateCustomerPassword error", ex);
         return(null);
     }
 }
示例#20
0
        public int[] GetCustomerRoleIds(Auth_User user, bool showHidden = false)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }
            try
            {
                var key = _cacheKeyService.PrepareKeyForShortTermCache(MotelUserServicesDefaults.UserRoleIdsCacheKey, user);

                var query = from ur in  _userRolesMappingRepository.Table join urm in _userRolesMappingRepository.Table
                            on ur.Id equals urm.RoleID
                            where urm.RoleID == user.Id
                            orderby ur.Id
                            select ur.RoleID;
                return(_staticCacheManager.Get(key, () => query.ToArray()));
            }
            catch (Exception ex)
            {
                _logger.Error("GetCustomerRoles error", ex);
                return(null);
            }
        }
示例#21
0
        public ActionResult Login(string userName, string password, bool isRememberMe)
        {
            if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))
            {
                throw new Exception("请输入用户名或密码");
            }
            var user = new Auth_User();

            try
            {
                if (ValidateUser(userName, password, out user))
                {
                    FormsAuthentication.SetAuthCookie(userName, true);
                    ApplicationUser.InitLoginInfo(userName, user.RealName, user.Auth_Department.Name);
                    FormsAuthentication.RedirectFromLoginPage(userName, true);
                    return(null);
                }
                return(RedirectToAction("Login", "Account", new { msg = "登录失败" }));
            }
            catch (Exception ex)
            {
                return(RedirectToAction("Login", "Account", new { msg = ex.Message }));
            }
        }
        private void 添加toolStripButton1_Click(object sender, EventArgs e)
        {
            if (!CheckControl())
            {
                return;
            }

            if (!m_personnerServer.AddPersonnelArchive(GetPersonnelArchiveData(), GetPersonnelListData(), out m_error))
            {
                MessageDialog.ShowPromptMessage(m_error);
                return;
            }

            IQueryable <View_Auth_Role> authRole = m_roleManager.GetAllRoles();
            string roleCode = "";

            foreach (var item in authRole)
            {
                if (item.角色名称 == CE_RoleEnum.普通操作员.ToString())
                {
                    roleCode = item.角色编码;
                }
            }

            Auth_User userInfo = new Auth_User();

            userInfo.LoginName          = txtWorkID.Text.Trim();
            userInfo.Password           = "******";
            userInfo.TrueName           = txtName.Text.Trim();
            userInfo.Dept               = m_departmentServer.GetDeptCode(cmbDept.Text);
            userInfo.IsActived          = false;
            userInfo.IsAdmin            = false;
            userInfo.AuthenticationMode = "密码认证";
            userInfo.IsLocked           = false;
            userInfo.CreateDate         = ServerTime.Time;
            userInfo.DestroyFlag        = false;
            userInfo.Remarks            = "通过人员档案自动添加";
            userInfo.Handset            = txtMobilePhone.Text.Trim();

            if (m_userManager.AddUser(userInfo))
            {
                if (!m_roleManager.AddUserInRole(roleCode, txtWorkID.Text))
                {
                    MessageDialog.ShowPromptMessage("员工信档案添加成功,角色分配失败!");
                }

                Flow_WarningNotice warning = new Flow_WarningNotice();

                warning.标题    = "合同等待新签";
                warning.发送方   = "系统";
                warning.发送时间  = ServerTime.Time;
                warning.附加信息1 = "员工合同管理";
                warning.附加信息2 = txtWorkID.Text;
                warning.附加信息3 = "0";
                warning.附加信息4 = "";
                warning.附加信息5 = "";
                warning.附加信息6 = "";
                warning.附加信息7 = "";
                warning.附加信息8 = "";
                warning.接收方   = "人力资源部办公室文员";
                warning.接收方类型 = "角色";
                warning.来源    = "人力资源管理系统";
                warning.内容    = "【" + txtName.Text + "】员工【合同类】等待新签!";
                warning.优先级   = "高";
                warning.状态    = "未读";

                m_warningNotice.SendWarningNotice(warning);
            }

            m_updateFlag = true;
            this.Close();
        }
示例#23
0
        private (string AccessToken, IEnumerable <Claim> Claims) createAccessTokenAsync(Auth_User user)
        {
            var claims = new List <Claim>
            {
                // Unique Id for all Jwt tokes
                new Claim(JwtRegisteredClaimNames.Jti, _encryptionService.CreateCryptographicallySecureGuid().ToString(), ClaimValueTypes.String, _configuration.Value.Issuer),
                // Issuer
                new Claim(JwtRegisteredClaimNames.Iss, _configuration.Value.Issuer, ClaimValueTypes.String, _configuration.Value.Issuer),
                // Issued at
                new Claim(JwtRegisteredClaimNames.Iat, DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64, _configuration.Value.Issuer),
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString(), ClaimValueTypes.String, _configuration.Value.Issuer),
                new Claim(ClaimTypes.Name, user.UserName, ClaimValueTypes.String, _configuration.Value.Issuer),
                new Claim(ClaimTypes.Email, user.Email?.ToString(), ClaimValueTypes.String, _configuration.Value.Issuer),
                // to invalidate the cookie
                new Claim(ClaimTypes.SerialNumber, user.Id.ToString(), ClaimValueTypes.String, _configuration.Value.Issuer),
                // custom data
                new Claim(ClaimTypes.UserData, user.Id.ToString(), ClaimValueTypes.String, _configuration.Value.Issuer)
            };

            // add roles
            var roleNames = _rolesUserServices.GetNameRoles(user.Id);

            foreach (var name in roleNames)
            {
                claims.Add(new Claim(ClaimTypes.Role, name, ClaimValueTypes.String, _configuration.Value.Issuer));
            }

            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.Value.Key));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var now   = DateTime.UtcNow;
            var token = new JwtSecurityToken(
                issuer: _configuration.Value.Issuer,
                audience: _configuration.Value.Audience,
                claims: claims,
                notBefore: now,
                expires: now.AddMinutes(_configuration.Value.AccessTokenExpirationMinutes),
                signingCredentials: creds);

            return(new JwtSecurityTokenHandler().WriteToken(token), claims);
        }
示例#24
0
        protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);
            if (this.User.Identity.IsAuthenticated)
            {
                IDbConnection dbConn = new OrmliteConnection().openConn();
                lstAssetDefault = InitAssetDefault();
                currentUser     = dbConn.GetByIdOrDefault <Auth_User>(User.Identity.Name);
                currentUserRole = dbConn.SqlList <Auth_Role>("EXEC p_Auth_UserInRole_Select_By_UserID @UserID", new { UserID = User.Identity.Name });
                string controllerName = this.GetType().Name;
                controllerName = controllerName.Substring(0, controllerName.IndexOf("Controller"));
                var lstAsset = new List <Auth_Action>();

                // Get MenuID from controller name
                string menuID = dbConn.SingleOrDefault <Auth_Menu>("ControllerName = {0}", controllerName).MenuID;
                foreach (var g in currentUserRole)
                {
                    // Get List Asset
                    var temp = dbConn.Select <Auth_Action>(p => p.RoleID == g.RoleID && p.MenuID == menuID);
                    if (temp.Count > 0)
                    {
                        lstAsset.AddRange(temp);
                    }
                }
                if (lstAsset.Count == 0)
                {
                    var item = new Auth_Action();
                    item.MenuID       = menuID;
                    item.Note         = "";
                    item.RowCreatedAt = DateTime.Now;
                    item.RowCreatedBy = "System";
                    if (currentUser.UserID == ConfigurationManager.AppSettings["superadmin"])
                    {
                        item.RoleID    = 1;
                        item.IsAllowed = true;
                        foreach (var asset in lstAssetDefault)
                        {
                            item.Action = asset;
                            dbConn.Insert <Auth_Action>(item);
                        }
                    }
                    else
                    {
                        item.RoleID    = currentUserRole.FirstOrDefault().RoleID;
                        item.IsAllowed = false;
                        foreach (var asset in lstAssetDefault)
                        {
                            item.Action = asset;
                            dbConn.Insert <Auth_Action>(item);
                        }
                    }
                }
                else
                {
                    foreach (var g in currentUserRole)
                    {
                        // Asset
                        var lst = lstAsset.Where(p => p.RoleID == g.RoleID).ToList();
                        foreach (var item in lst)
                        {
                            if (!userAsset.ContainsKey(item.Action))
                            {
                                userAsset.Add(item.Action, item.IsAllowed);
                            }
                            else if (item.IsAllowed)
                            {
                                userAsset.Remove(item.Action);
                                userAsset.Add(item.Action, item.IsAllowed);
                            }
                        }
                    }
                }
                // Get Asset View Menu
                foreach (var g in currentUserRole)
                {
                    var lstView = dbConn.Select <Auth_Action>(p => p.RoleID == g.RoleID && p.Action == "View");
                    //var lstView = new Auth_Menu().GetMenuByRoleID(g.RoleID);
                    foreach (var i in lstView)
                    {
                        if (!dictView.ContainsKey("menu_" + i.MenuID))
                        {
                            if (i.IsAllowed)
                            {
                                dictView.Add("menu_" + i.MenuID, true);
                            }
                        }
                    }
                }
                ViewData["menuView"] = dictView;
                dbConn.Close();
            }
        }
示例#25
0
 public IList <Auth_Assign> GetAllPermissonOfUser(Auth_User user)
 {
     return(GetAllPermissonOfUser(user.Id));
 }