public void OnGetUser(GetUserEventArgs e) { this.Invoke(new MethodInvoker(() => { this.Invoke(new MethodInvoker(() => { this.lblUserName.Text = e.User.UserName; })); })); }
/// <summary> /// Returns the user to check. Default is to use the HttpContext's User Identity as the username /// </summary> /// <param name="httpContext">The HttpContext of the request</param> /// <returns>The UserInfo, should return the Public user if they are not logged in.</returns> private UserInfo GetCurrentUser(HttpContextBase httpContext) { UserInfo FoundUser = null; // Create GetUser Event Arguments GetUserEventArgs UserArgs = new GetUserEventArgs() { HttpContext = httpContext, }; using (var KenticoAuthorizeGetUserTaskHandler = AuthorizeEvents.GetUser.StartEvent(UserArgs)) { if (UserArgs.FoundUser == null) { try { // Grab Username and find the user string Username = !string.IsNullOrWhiteSpace(UserArgs.FoundUserName) ? UserArgs.FoundUserName : DataHelper.GetNotEmpty((httpContext.User != null && httpContext.User.Identity != null ? httpContext.User.Identity.Name : "public"), "public"); UserArgs.FoundUser = CacheHelper.Cache(cs => { UserInfo UserObj = UserInfo.Provider.Get() .WhereEquals("Username", Username) .FirstOrDefault(); if (UserObj == null || !UserObj.Enabled) { UserObj = UserInfo.Provider.Get() .WhereEquals("Username", "public") .FirstOrDefault(); } if (cs.Cached) { cs.CacheDependency = CacheHelper.GetCacheDependency("cms.user|byid|" + UserObj.UserID); } return(UserObj); }, new CacheSettings(60, "KenticoAuthorizeGetCurrentUser", Username)); } catch (Exception ex) { UserArgs.ExceptionOnLookup = ex; } } // Finish event KenticoAuthorizeGetUserTaskHandler.FinishEvent(); // Pass found user along FoundUser = UserArgs.FoundUser; } return(FoundUser); }
/// <summary> /// Returns the user to check. Default is to use the HttpContext's User Identity as the username /// </summary> /// <param name="httpContext">The HttpContext of the request</param> /// <returns>The UserInfo, should return the Public user if they are not logged in.</returns> public async Task <UserInfo> GetCurrentUserInfoAsync() { UserInfo foundUser = null; var site = SiteContextSafe(); // Create GetUser Event Arguments GetUserEventArgs userArgs = new GetUserEventArgs() { HttpContext = _httpContext }; var customUser = await _authorizationContextCustomizer.GetCustomUserAsync(userArgs, AuthorizationEventType.Before); if (customUser != null) { return(customUser); } // Grab Username and find the user string username = !string.IsNullOrWhiteSpace(userArgs.FoundUserName) ? userArgs.FoundUserName : DataHelper.GetNotEmpty((_httpContext.User != null && _httpContext.User.Identity != null ? _httpContext.User.Identity.Name : "public"), "public"); foundUser = await _progressiveCache.LoadAsync(async cs => { var userObj = await _userInfoProvider.GetAsync(username); if (userObj == null || !userObj.Enabled) { userObj = await _userInfoProvider.GetAsync("public"); } if (cs.Cached) { cs.CacheDependency = CacheHelper.GetCacheDependency("cms.user|byid|" + userObj.UserID); } return(userObj); }, new CacheSettings(60, "KenticoAuthorizeGetCurrentUser", username)); userArgs.FoundUser = foundUser; customUser = await _authorizationContextCustomizer.GetCustomUserAsync(userArgs, AuthorizationEventType.Before); if (customUser != null) { foundUser = customUser; } return(foundUser); }
public void OnGetUser(GetUserEventArgs e) { throw new NotImplementedException(); }
public Task <UserContext> GetCustomUserContextAsync(GetUserEventArgs userArgs, AuthorizationEventType eventType) { return(Task.FromResult <UserContext>(null)); }
public async Task <UserContext> GetCurrentUserAsync() { var site = SiteContextSafe(); // Create GetUser Event Arguments GetUserEventArgs userArgs = new GetUserEventArgs() { HttpContext = _httpContext }; // Allow them to customize the user context var customUserContext = await _authorizationContextCustomizer.GetCustomUserContextAsync(userArgs, AuthorizationEventType.Before); if (customUserContext != null) { return(customUserContext); } // Get the current user var foundUser = await GetCurrentUserInfoAsync(); // Allow them to customize the user context again now with the current UserInfo known userArgs.FoundUser = foundUser; customUserContext = await _authorizationContextCustomizer.GetCustomUserContextAsync(userArgs, AuthorizationEventType.After); if (customUserContext != null) { return(customUserContext); } // Build user context return(await _progressiveCache.LoadAsync(async cs => { if (cs.Cached) { cs.CacheDependency = CacheHelper.GetCacheDependency(new string[] { $"{UserInfo.OBJECT_TYPE}|byname|{foundUser?.UserName ?? "public"}", $"{UserRoleInfo.OBJECT_TYPE}|all", $"{RolePermissionInfo.OBJECT_TYPE}|all" }); } if (foundUser?.IsPublic() ?? true) { var userContext = new UserContext() { UserName = "******", IsAuthenticated = false, Roles = Array.Empty <string>() }; return userContext; } else { // Get roles and permissions var userContext = new UserContext() { UserName = foundUser.UserName, IsAuthenticated = true, IsGlobalAdmin = foundUser.SiteIndependentPrivilegeLevel == CMS.Base.UserPrivilegeLevelEnum.GlobalAdmin, }; if (foundUser.SiteIndependentPrivilegeLevel == CMS.Base.UserPrivilegeLevelEnum.Admin || foundUser.SiteIndependentPrivilegeLevel == CMS.Base.UserPrivilegeLevelEnum.Editor) { // Only add editor/admin if they are on this site var userSite = await new ObjectQuery <UserSiteInfo>() .WhereEquals(nameof(UserSiteInfo.UserID), foundUser.UserID) .WhereEquals(nameof(UserSiteInfo.SiteID), site.SiteID) .GetEnumerableTypedResultAsync(); if (userSite.Any()) { userContext.IsEditor = foundUser.SiteIndependentPrivilegeLevel == CMS.Base.UserPrivilegeLevelEnum.Editor; userContext.IsAdministrator = foundUser.SiteIndependentPrivilegeLevel == CMS.Base.UserPrivilegeLevelEnum.Admin; } } // Roles var rolesResults = (await new ObjectQuery <RoleInfo>() .Where($"RoleID in (Select UR.RoleID from CMS_UserRole UR where UserID = {foundUser.UserID})") .WhereEqualsOrNull(nameof(RoleInfo.SiteID), site.SiteID) .Columns(nameof(RoleInfo.RoleName)) .GetEnumerableTypedResultAsync()); var roles = rolesResults.ToList().Select(x => x.RoleName); var membershipRolesResults = (await new ObjectQuery <RoleInfo>() .Source(x => x.Join <MembershipRoleInfo>("CMS_Role.RoleID", "CMS_MembershipRole.RoleID")) .Source(x => x.Join <MembershipInfo>("CMS_MembershipRole.MembershipID", "CMS_Membership.MembershipID")) .Source(x => x.Join <MembershipUserInfo>("CMS_Membership.MembershipID", "CMS_MembershipUser.MembershipID")) .WhereEquals("UserID", foundUser.UserID) .Columns(nameof(RoleInfo.RoleName)) .GetEnumerableTypedResultAsync()); var membershipRoles = membershipRolesResults.ToList().Select(x => x.RoleName); userContext.Roles = roles.Union(membershipRoles); // Permission names var permissionsResults = (await new ObjectQuery <PermissionNameInfo>() .Source(x => x.Join <ResourceInfo>("CMS_Permission.ResourceID", "CMS_Resource.ResourceID")) .Source(x => x.Join <RolePermissionInfo>("CMS_Permission.PermissionID", "CMS_RolePermission.PermissionID")) .Source(x => x.Join <RoleInfo>("CMS_RolePermission.RoleID", "CMS_Role.RoleID")) .WhereIn(nameof(RoleInfo.RoleName), userContext.Roles.ToArray()) .Columns($"{nameof(ResourceInfo.ResourceName)}+'.'+{nameof(PermissionNameInfo.PermissionName)} as PermissionName") .GetEnumerableResultAsync()); userContext.Permissions = permissionsResults.ToList().Select(x => (string)x["PermissionName"]); return userContext; } }, new CacheSettings(60, "UserContext", foundUser?.UserName ?? "public", site.SiteID))); }