fix #4284 - handle user role effective and expiry date
This commit is contained in:
		| @ -72,15 +72,13 @@ namespace Oqtane.Controllers | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // GET api/<controller>/name/{name}/{email}?siteid=x | ||||
|         [HttpGet("name/{name}/{email}")] | ||||
|         public User Get(string name, string email, string siteid) | ||||
|         // GET api/<controller>/username/{username}?siteid=x | ||||
|         [HttpGet("username/{username}")] | ||||
|         public User Get(string username, string siteid) | ||||
|         { | ||||
|             if (int.TryParse(siteid, out int SiteId) && SiteId == _tenantManager.GetAlias().SiteId) | ||||
|             { | ||||
|                 name = (name == "-") ? "" : name; | ||||
|                 email = (email == "-") ? "" : email; | ||||
|                 User user = _userManager.GetUser(name, email, SiteId); | ||||
|                 User user = _userManager.GetUser(username, SiteId); | ||||
|                 if (user == null) | ||||
|                 { | ||||
|                     HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound; | ||||
| @ -95,7 +93,36 @@ namespace Oqtane.Controllers | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 _logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized User Get Attempt {Username} {Email} {SiteId}", name, email, siteid); | ||||
|                 _logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized User Get Attempt {Username} {SiteId}", username, siteid); | ||||
|                 HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden; | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // GET api/<controller>/name/{username}/{email}?siteid=x | ||||
|         [HttpGet("search/{username}/{email}")] | ||||
|         public User Get(string username, string email, string siteid) | ||||
|         { | ||||
|             if (int.TryParse(siteid, out int SiteId) && SiteId == _tenantManager.GetAlias().SiteId) | ||||
|             { | ||||
|                 username = (username == "-") ? "" : username; | ||||
|                 email = (email == "-") ? "" : email; | ||||
|                 User user = _userManager.GetUser(username, email, SiteId); | ||||
|                 if (user == null) | ||||
|                 { | ||||
|                     HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     List<Setting> settings = _settings.GetSettings(EntityNames.User, user.UserId).ToList(); | ||||
|                     user.Settings = settings.Where(item => !item.IsPrivate || _userPermissions.GetUser(User).UserId == user.UserId) | ||||
|                         .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); | ||||
|                 } | ||||
|                 return Filter(user); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 _logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized User Get Attempt {Username} {Email} {SiteId}", username, email, siteid); | ||||
|                 HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden; | ||||
|                 return null; | ||||
|             } | ||||
| @ -340,14 +367,11 @@ namespace Oqtane.Controllers | ||||
|             if (user.IsAuthenticated) | ||||
|             { | ||||
|                 user.Username = User.Identity.Name; | ||||
|                 if (User.HasClaim(item => item.Type == ClaimTypes.NameIdentifier)) | ||||
|                 { | ||||
|                     user.UserId = int.Parse(User.Claims.First(item => item.Type == ClaimTypes.NameIdentifier).Value); | ||||
|                 } | ||||
|                 user.UserId = User.UserId(); | ||||
|                 string roles = ""; | ||||
|                 foreach (var claim in User.Claims.Where(item => item.Type == ClaimTypes.Role)) | ||||
|                 foreach (var roleName in User.Roles()) | ||||
|                 { | ||||
|                     roles += claim.Value + ";"; | ||||
|                     roles += roleName + ";"; | ||||
|                 } | ||||
|                 if (roles != "") roles = ";" + roles; | ||||
|                 user.Roles = roles; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 sbwalker
					sbwalker