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>
|
/// <param name="siteId">ID of a <see cref="Site"/></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<User> GetUserAsync(int userId, int siteId);
|
Task<User> GetUserAsync(int userId, int siteId);
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get a <see cref="User"/> of a specific site
|
/// Get a <see cref="User"/> of a specific site
|
||||||
|
@ -25,6 +24,15 @@ namespace Oqtane.Services
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<User> GetUserAsync(string username, int siteId);
|
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>
|
/// <summary>
|
||||||
/// Save a user to the Database.
|
/// Save a user to the Database.
|
||||||
/// The <see cref="User"/> object contains all the information incl. what <see cref="Site"/> it belongs to.
|
/// 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 System.Threading.Tasks;
|
||||||
using Oqtane.Documentation;
|
using Oqtane.Documentation;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace Oqtane.Services
|
namespace Oqtane.Services
|
||||||
{
|
{
|
||||||
|
@ -21,7 +22,12 @@ namespace Oqtane.Services
|
||||||
|
|
||||||
public async Task<User> GetUserAsync(string username, int siteId)
|
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)
|
public async Task<User> AddUserAsync(User user)
|
||||||
|
|
|
@ -61,13 +61,15 @@ namespace Oqtane.Controllers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GET api/<controller>/name/x?siteid=x
|
// GET api/<controller>/name/{name}/{email}?siteid=x
|
||||||
[HttpGet("name/{name}")]
|
[HttpGet("name/{name}/{email}")]
|
||||||
public User Get(string name, string siteid)
|
public User Get(string name, string email, string siteid)
|
||||||
{
|
{
|
||||||
if (int.TryParse(siteid, out int SiteId) && SiteId == _tenantManager.GetAlias().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)
|
if (user == null)
|
||||||
{
|
{
|
||||||
HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
|
HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
|
||||||
|
@ -76,7 +78,7 @@ namespace Oqtane.Controllers
|
||||||
}
|
}
|
||||||
else
|
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;
|
HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ namespace Oqtane.Managers
|
||||||
{
|
{
|
||||||
User GetUser(int userid, int siteid);
|
User GetUser(int userid, int siteid);
|
||||||
User GetUser(string username, int siteid);
|
User GetUser(string username, int siteid);
|
||||||
|
User GetUser(string username, string email, int siteid);
|
||||||
Task<User> AddUser(User user);
|
Task<User> AddUser(User user);
|
||||||
Task<User> UpdateUser(User user);
|
Task<User> UpdateUser(User user);
|
||||||
Task DeleteUser(int userid, int siteid);
|
Task DeleteUser(int userid, int siteid);
|
||||||
|
|
|
@ -51,7 +51,12 @@ namespace Oqtane.Managers
|
||||||
|
|
||||||
public User GetUser(string username, int siteid)
|
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)
|
if (user != null)
|
||||||
{
|
{
|
||||||
user.SiteId = siteid;
|
user.SiteId = siteid;
|
||||||
|
|
|
@ -11,6 +11,7 @@ namespace Oqtane.Repository
|
||||||
User GetUser(int userId);
|
User GetUser(int userId);
|
||||||
User GetUser(int userId, bool tracking);
|
User GetUser(int userId, bool tracking);
|
||||||
User GetUser(string username);
|
User GetUser(string username);
|
||||||
|
User GetUser(string username, string email);
|
||||||
void DeleteUser(int userId);
|
void DeleteUser(int userId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,7 +105,21 @@ namespace Oqtane.Repository
|
||||||
|
|
||||||
public User GetUser(string username)
|
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)
|
public void DeleteUser(int userId)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user