add ability to get user based on username or email address
This commit is contained in:
parent
c344eedb12
commit
c2acd010ce
|
@ -15,7 +15,6 @@ namespace Oqtane.Services
|
|||
/// <param name="siteId">ID of a <see cref="Site"/></param>
|
||||
/// <returns></returns>
|
||||
Task<User> GetUserAsync(int userId, int siteId);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get a <see cref="User"/> of a specific site
|
||||
|
@ -25,6 +24,15 @@ namespace Oqtane.Services
|
|||
/// <returns></returns>
|
||||
Task<User> GetUserAsync(string username, int siteId);
|
||||
|
||||
/// <summary>
|
||||
/// Get a <see cref="User"/> of a specific site
|
||||
/// </summary>
|
||||
/// <param name="username">Username / login of a <see cref="User"/></param>
|
||||
/// <param name="email">email address of a <see cref="User"/></param>
|
||||
/// <param name="siteId">ID of a <see cref="Site"/></param>
|
||||
/// <returns></returns>
|
||||
Task<User> GetUserAsync(string username, string email, int siteId);
|
||||
|
||||
/// <summary>
|
||||
/// Save a user to the Database.
|
||||
/// The <see cref="User"/> object contains all the information incl. what <see cref="Site"/> it belongs to.
|
||||
|
|
|
@ -4,6 +4,7 @@ using System.Net.Http;
|
|||
using System.Threading.Tasks;
|
||||
using Oqtane.Documentation;
|
||||
using System.Net;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Oqtane.Services
|
||||
{
|
||||
|
@ -21,7 +22,12 @@ namespace Oqtane.Services
|
|||
|
||||
public async Task<User> GetUserAsync(string username, int siteId)
|
||||
{
|
||||
return await GetJsonAsync<User>($"{Apiurl}/name/{username}?siteid={siteId}");
|
||||
return await GetUserAsync(username, "", siteId);
|
||||
}
|
||||
|
||||
public async Task<User> GetUserAsync(string username, string email, int siteId)
|
||||
{
|
||||
return await GetJsonAsync<User>($"{Apiurl}/name/{(!string.IsNullOrEmpty(username) ? username : "-")}/{(!string.IsNullOrEmpty(email) ? email : "-")}/?siteid={siteId}");
|
||||
}
|
||||
|
||||
public async Task<User> AddUserAsync(User user)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user