add ability to get user based on username or email address
This commit is contained in:
@ -61,13 +61,15 @@ namespace Oqtane.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
// GET api/<controller>/name/x?siteid=x
|
||||
[HttpGet("name/{name}")]
|
||||
public User Get(string name, string siteid)
|
||||
// GET api/<controller>/name/{name}/{email}?siteid=x
|
||||
[HttpGet("name/{name}/{email}")]
|
||||
public User Get(string name, string email, string siteid)
|
||||
{
|
||||
if (int.TryParse(siteid, out int SiteId) && SiteId == _tenantManager.GetAlias().SiteId)
|
||||
{
|
||||
User user = _userManager.GetUser(name, SiteId);
|
||||
name = (name == "-") ? "" : name;
|
||||
email = (email == "-") ? "" : email;
|
||||
User user = _userManager.GetUser(name, email, SiteId);
|
||||
if (user == null)
|
||||
{
|
||||
HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
|
||||
@ -76,7 +78,7 @@ namespace Oqtane.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized User Get Attempt {Username} {SiteId}", name, siteid);
|
||||
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized User Get Attempt {Username} {Email} {SiteId}", name, email, siteid);
|
||||
HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ namespace Oqtane.Managers
|
||||
{
|
||||
User GetUser(int userid, int siteid);
|
||||
User GetUser(string username, int siteid);
|
||||
User GetUser(string username, string email, int siteid);
|
||||
Task<User> AddUser(User user);
|
||||
Task<User> UpdateUser(User user);
|
||||
Task DeleteUser(int userid, int siteid);
|
||||
|
||||
@ -51,7 +51,12 @@ namespace Oqtane.Managers
|
||||
|
||||
public User GetUser(string username, int siteid)
|
||||
{
|
||||
User user = _users.GetUser(username);
|
||||
return GetUser(username, "", siteid);
|
||||
}
|
||||
|
||||
public User GetUser(string username, string email, int siteid)
|
||||
{
|
||||
User user = _users.GetUser(username, email);
|
||||
if (user != null)
|
||||
{
|
||||
user.SiteId = siteid;
|
||||
|
||||
@ -11,6 +11,7 @@ namespace Oqtane.Repository
|
||||
User GetUser(int userId);
|
||||
User GetUser(int userId, bool tracking);
|
||||
User GetUser(string username);
|
||||
User GetUser(string username, string email);
|
||||
void DeleteUser(int userId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,7 +105,21 @@ namespace Oqtane.Repository
|
||||
|
||||
public User GetUser(string username)
|
||||
{
|
||||
return _db.User.Where(item => item.Username == username).FirstOrDefault();
|
||||
return GetUser(username, "");
|
||||
}
|
||||
|
||||
public User GetUser(string username, string email)
|
||||
{
|
||||
User user = null;
|
||||
if (!string.IsNullOrEmpty(username))
|
||||
{
|
||||
user = _db.User.Where(item => item.Username == username).FirstOrDefault();
|
||||
}
|
||||
if (user == null && !string.IsNullOrEmpty(email))
|
||||
{
|
||||
user = _db.User.Where(item => item.Email == email).FirstOrDefault();
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
public void DeleteUser(int userId)
|
||||
|
||||
Reference in New Issue
Block a user