DocSpace-buildtools/products/ASC.People/Server/Api/UserController.cs

316 lines
11 KiB
C#
Raw Normal View History

2022-03-01 11:52:52 +00:00
using Module = ASC.Api.Core.Module;
2022-02-28 19:23:39 +00:00
namespace ASC.People.Api;
2022-03-01 11:52:52 +00:00
public class UserController : ApiControllerBase
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
private readonly UserControllerEngine _userControllerEngine;
2022-02-28 19:23:39 +00:00
2022-03-01 11:52:52 +00:00
public UserController(UserControllerEngine userControllerEngine)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
_userControllerEngine = userControllerEngine;
2022-02-28 19:23:39 +00:00
}
[Create("active")]
public EmployeeDto AddMemberAsActivatedFromBody([FromBody] MemberRequestDto memberModel)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.AddMemberAsActivated(memberModel);
2022-02-28 19:23:39 +00:00
}
[Create("active")]
[Consumes("application/x-www-form-urlencoded")]
public EmployeeDto AddMemberAsActivatedFromForm([FromForm] MemberRequestDto memberModel)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.AddMemberAsActivated(memberModel);
2022-02-28 19:23:39 +00:00
}
[Create]
[Authorize(AuthenticationSchemes = "confirm", Roles = "LinkInvite,Everyone")]
public EmployeeDto AddMemberFromBody([FromBody] MemberRequestDto memberModel)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.AddMember(memberModel);
2022-02-28 19:23:39 +00:00
}
[Create]
[Authorize(AuthenticationSchemes = "confirm", Roles = "LinkInvite,Everyone")]
[Consumes("application/x-www-form-urlencoded")]
public EmployeeDto AddMemberFromForm([FromForm] MemberRequestDto memberModel)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.AddMember(memberModel);
2022-02-28 19:23:39 +00:00
}
[Update("{userid}/password")]
[Authorize(AuthenticationSchemes = "confirm", Roles = "PasswordChange,EmailChange,Activation,EmailActivation,Everyone")]
public EmployeeDto ChangeUserPasswordFromBody(Guid userid, [FromBody] MemberRequestDto memberModel)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.ChangeUserPassword(userid, memberModel);
2022-02-28 19:23:39 +00:00
}
[Update("{userid}/password")]
[Authorize(AuthenticationSchemes = "confirm", Roles = "PasswordChange,EmailChange,Activation,EmailActivation,Everyone")]
[Consumes("application/x-www-form-urlencoded")]
public EmployeeDto ChangeUserPasswordFromForm(Guid userid, [FromForm] MemberRequestDto memberModel)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.ChangeUserPassword(userid, memberModel);
2022-02-28 19:23:39 +00:00
}
[Delete("{userid}")]
public EmployeeDto DeleteMember(string userid)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.DeleteMember(userid);
2022-02-28 19:23:39 +00:00
}
[Delete("@self")]
[Authorize(AuthenticationSchemes = "confirm", Roles = "ProfileRemove")]
public EmployeeDto DeleteProfile()
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.DeleteProfile();
2022-02-28 19:23:39 +00:00
}
[Read("status/{status}/search")]
public IEnumerable<EmployeeDto> GetAdvanced(EmployeeStatus status, [FromQuery] string query)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.GetAdvanced(status, query);
2022-02-28 19:23:39 +00:00
}
[Read]
public IEnumerable<EmployeeDto> GetAll()
{
return GetByStatus(EmployeeStatus.Active);
}
[Read("email")]
public EmployeeDto GetByEmail([FromQuery] string email)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.GetByEmail(email);
2022-02-28 19:23:39 +00:00
}
[Read("{username}", order: int.MaxValue)]
public EmployeeDto GetById(string username)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.GetById(username);
2022-02-28 19:23:39 +00:00
}
[Read("status/{status}")]
public IEnumerable<EmployeeDto> GetByStatus(EmployeeStatus status)
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.GetByStatus(status);
2022-02-28 19:23:39 +00:00
}
[Read("filter")]
public IEnumerable<EmployeeDto> GetFullByFilter(EmployeeStatus? employeeStatus, Guid? groupId, EmployeeActivationStatus? activationStatus, EmployeeType? employeeType, bool? isAdministrator)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.GetFullByFilter(employeeStatus, groupId, activationStatus, employeeType, isAdministrator);
2022-02-28 19:23:39 +00:00
}
[Read("info")]
public Module GetModule()
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.GetModule();
2022-02-28 19:23:39 +00:00
}
2022-03-01 11:52:52 +00:00
2022-02-28 19:23:39 +00:00
[Read("search")]
public IEnumerable<EmployeeDto> GetPeopleSearch([FromQuery] string query)
2022-02-28 19:23:39 +00:00
{
return GetSearch(query);
}
[Read("@search/{query}")]
public IEnumerable<EmployeeDto> GetSearch(string query)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.GetSearch(query);
2022-02-28 19:23:39 +00:00
}
[Read("simple/filter")]
public IEnumerable<EmployeeDto> GetSimpleByFilter(EmployeeStatus? employeeStatus, Guid? groupId, EmployeeActivationStatus? activationStatus, EmployeeType? employeeType, bool? isAdministrator)
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.GetSimpleByFilter(employeeStatus, groupId, activationStatus, employeeType, isAdministrator);
2022-02-28 19:23:39 +00:00
}
[AllowAnonymous]
[Create(@"register")]
public Task<string> RegisterUserOnPersonalAsync(RegisterPersonalUserRequestDto model)
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.RegisterUserOnPersonalAsync(model, Request);
2022-02-28 19:23:39 +00:00
}
[Update("delete", Order = -1)]
public IEnumerable<EmployeeDto> RemoveUsersFromBody([FromBody] UpdateMembersRequestDto model)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.RemoveUsers(model);
2022-02-28 19:23:39 +00:00
}
[Update("delete", Order = -1)]
[Consumes("application/x-www-form-urlencoded")]
public IEnumerable<EmployeeDto> RemoveUsersFromForm([FromForm] UpdateMembersRequestDto model)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.RemoveUsers(model);
2022-02-28 19:23:39 +00:00
}
[Update("invite")]
public IEnumerable<EmployeeDto> ResendUserInvitesFromBody([FromBody] UpdateMembersRequestDto model)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.ResendUserInvites(model);
2022-02-28 19:23:39 +00:00
}
[Update("invite")]
[Consumes("application/x-www-form-urlencoded")]
public IEnumerable<EmployeeDto> ResendUserInvitesFromForm([FromForm] UpdateMembersRequestDto model)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.ResendUserInvites(model);
2022-02-28 19:23:39 +00:00
}
[Read("@self")]
public EmployeeDto Self()
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.Self();
2022-02-28 19:23:39 +00:00
}
[Create("email", false)]
public object SendEmailChangeInstructionsFromBody([FromBody] UpdateMemberRequestDto model)
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.SendEmailChangeInstructions(model);
2022-02-28 19:23:39 +00:00
}
[Create("email", false)]
[Consumes("application/x-www-form-urlencoded")]
public object SendEmailChangeInstructionsFromForm([FromForm] UpdateMemberRequestDto model)
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.SendEmailChangeInstructions(model);
2022-02-28 19:23:39 +00:00
}
[AllowAnonymous]
[Create("password", false)]
public object SendUserPasswordFromBody([FromBody] MemberRequestDto memberModel)
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.SendUserPassword(memberModel);
2022-02-28 19:23:39 +00:00
}
[AllowAnonymous]
[Create("password", false)]
[Consumes("application/x-www-form-urlencoded")]
public object SendUserPasswordFromForm([FromForm] MemberRequestDto memberModel)
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.SendUserPassword(memberModel);
2022-02-28 19:23:39 +00:00
}
[Update("activationstatus/{activationstatus}")]
[Authorize(AuthenticationSchemes = "confirm", Roles = "Activation,Everyone")]
public IEnumerable<EmployeeDto> UpdateEmployeeActivationStatusFromBody(EmployeeActivationStatus activationstatus, [FromBody] UpdateMembersRequestDto model)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.UpdateEmployeeActivationStatus(activationstatus, model);
2022-02-28 19:23:39 +00:00
}
[Update("activationstatus/{activationstatus}")]
[Authorize(AuthenticationSchemes = "confirm", Roles = "Activation,Everyone")]
[Consumes("application/x-www-form-urlencoded")]
public IEnumerable<EmployeeDto> UpdateEmployeeActivationStatusFromForm(EmployeeActivationStatus activationstatus, [FromForm] UpdateMembersRequestDto model)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.UpdateEmployeeActivationStatus(activationstatus, model);
2022-02-28 19:23:39 +00:00
}
[Update("{userid}/culture")]
public EmployeeDto UpdateMemberCultureFromBody(string userid, [FromBody] UpdateMemberRequestDto memberModel)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.UpdateMemberCulture(userid, memberModel);
2022-02-28 19:23:39 +00:00
}
[Update("{userid}/culture")]
[Consumes("application/x-www-form-urlencoded")]
public EmployeeDto UpdateMemberCultureFromForm(string userid, [FromForm] UpdateMemberRequestDto memberModel)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.UpdateMemberCulture(userid, memberModel);
2022-02-28 19:23:39 +00:00
}
[Update("{userid}")]
public EmployeeDto UpdateMemberFromBody(string userid, [FromBody] UpdateMemberRequestDto memberModel)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.UpdateMember(userid, memberModel);
2022-02-28 19:23:39 +00:00
}
[Update("{userid}")]
[Consumes("application/x-www-form-urlencoded")]
public EmployeeDto UpdateMemberFromForm(string userid, [FromForm] UpdateMemberRequestDto memberModel)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.UpdateMember(userid, memberModel);
2022-02-28 19:23:39 +00:00
}
[Update("status/{status}")]
public IEnumerable<EmployeeDto> UpdateUserStatusFromBody(EmployeeStatus status, [FromBody] UpdateMembersRequestDto model)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.UpdateUserStatus(status, model);
2022-02-28 19:23:39 +00:00
}
[Update("status/{status}")]
[Consumes("application/x-www-form-urlencoded")]
public IEnumerable<EmployeeDto> UpdateUserStatusFromForm(EmployeeStatus status, [FromForm] UpdateMembersRequestDto model)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.UpdateUserStatus(status, model);
2022-02-28 19:23:39 +00:00
}
[Update("type/{type}")]
public IEnumerable<EmployeeDto> UpdateUserTypeFromBody(EmployeeType type, [FromBody] UpdateMembersRequestDto model)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.UpdateUserType(type, model);
2022-02-28 19:23:39 +00:00
}
[Update("type/{type}")]
[Consumes("application/x-www-form-urlencoded")]
public IEnumerable<EmployeeDto> UpdateUserTypeFromForm(EmployeeType type, [FromForm] UpdateMembersRequestDto model)
2022-02-28 19:23:39 +00:00
{
2022-03-01 11:52:52 +00:00
return _userControllerEngine.UpdateUserType(type, model);
}
2022-02-28 19:23:39 +00:00
///// <summary>
///// Adds a new portal user from import with the first and last name, email address
///// </summary>
///// <short>
///// Add new import user
///// </short>
///// <param name="userList">The list of users to add</param>
///// <param name="importUsersAsCollaborators" optional="true">Add users as guests (bool type: false|true)</param>
///// <returns>Newly created users</returns>
//[Create("import/save")]
//public void SaveUsers(string userList, bool importUsersAsCollaborators)
//{
// lock (progressQueue.SynchRoot)
// {
// var task = progressQueue.GetItems().OfType<ImportUsersTask>().FirstOrDefault(t => (int)t.Id == TenantProvider.CurrentTenantID);
// if (task != null && task.IsCompleted)
// {
// progressQueue.Remove(task);
// task = null;
// }
// if (task == null)
// {
// progressQueue.Add(new ImportUsersTask(userList, importUsersAsCollaborators, GetHttpHeaders(HttpContext.Current.Request))
// {
// Id = TenantProvider.CurrentTenantID,
// UserId = SecurityContext.CurrentAccount.ID,
// Percentage = 0
// });
// }
// }
//}
//[Read("import/status")]
//public object GetStatus()
//{
// lock (progressQueue.SynchRoot)
// {
// var task = progressQueue.GetItems().OfType<ImportUsersTask>().FirstOrDefault(t => (int)t.Id == TenantProvider.CurrentTenantID);
// if (task == null) return null;
// return new
// {
// Completed = task.IsCompleted,
// Percents = (int)task.Percentage,
// UserCounter = task.GetUserCounter,
// Status = (int)task.Status,
// Error = (string)task.Error,
// task.Data
// };
// }
//}
}