diff --git a/eFormAPI/eFormAPI/App_Start/AutofacConfig.cs b/eFormAPI/eFormAPI/App_Start/AutofacConfig.cs index 6bb27b4df1..e0748c3e46 100644 --- a/eFormAPI/eFormAPI/App_Start/AutofacConfig.cs +++ b/eFormAPI/eFormAPI/App_Start/AutofacConfig.cs @@ -2,6 +2,8 @@ using System.Web.Http; using Autofac; using Autofac.Integration.WebApi; +using eFormAPI.Web.Infrastructure.Data; +using eFormAPI.Web.Infrastructure.Identity; namespace eFormAPI.Web { @@ -19,6 +21,7 @@ public static void ConfigureContainer() // OPTIONAL: Register the Autofac filter provider. builder.RegisterWebApiFilterProvider(config); // Set the dependency resolver to be Autofac. + builder.RegisterType().InstancePerRequest(); Container = builder.Build(); } } diff --git a/eFormAPI/eFormAPI/Controllers/AccountController.cs b/eFormAPI/eFormAPI/Controllers/AccountController.cs index 8fbfa49311..bd248cd0db 100644 --- a/eFormAPI/eFormAPI/Controllers/AccountController.cs +++ b/eFormAPI/eFormAPI/Controllers/AccountController.cs @@ -53,7 +53,8 @@ public UserInfoViewModel GetUserInfo() { Email = user.Email, Id = user.Id, - UserName = user.UserName + FirstName = user.FirstName, + LastName = user.LastName }; } diff --git a/eFormAPI/eFormAPI/Controllers/AdminController.cs b/eFormAPI/eFormAPI/Controllers/AdminController.cs new file mode 100644 index 0000000000..37d73827f3 --- /dev/null +++ b/eFormAPI/eFormAPI/Controllers/AdminController.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections.Generic; +using System.Data.Entity; +using System.Linq; +using System.Net.Http; +using System.Web.Http; +using eFormAPI.Web.Infrastructure.Data; +using eFormAPI.Web.Infrastructure.Identity; +using eFormData; +using eFromAPI.Common.API; +using eFromAPI.Common.Models; +using eFromAPI.Common.Models.Auth; +using eFromAPI.Common.Models.User; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin.Security; + +namespace eFormAPI.Web.Controllers +{ + [Authorize] + [RoutePrefix("api/admin")] + public class AdminController : ApiController + { + private readonly BaseDbContext _dbContext; + private EformUserManager _eformUserManager; + private EformRoleManager _eformRoleManager; + + public AdminController(BaseDbContext dbContext) + { + _dbContext = dbContext; + } + + public EformUserManager UserManager + { + get => _eformUserManager ?? Request.GetOwinContext().GetUserManager(); + private set => _eformUserManager = value; + } + + public EformRoleManager RoleManager + { + get => _eformRoleManager ?? Request.GetOwinContext().GetUserManager(); + private set => _eformRoleManager = value; + } + + [HttpGet] + [Route("user/{userId}")] + public OperationDataResult GetUser(int userId) + { + try + { + var user = _dbContext.Users.Include(x => x.Roles).FirstOrDefault(x => x.Id == userId); + + + var model = new UserRegisterModel + { + Email = user?.Email, + Id = userId, + FirstName = user.FirstName, + LastName = user.LastName + }; + + // var userRoles = user.Roles.FirstOrDefault(); + // + // if (userRoles != null) + // { + // model.Role = _eformRoleManager.FindById(userRoles.RoleId).Name; + // } + + return new OperationDataResult(true, model); + + } + catch (Exception exception) + { + return new OperationDataResult(false, "Error when obtaining users"); + } + } + + [HttpPost] + [Route("get-users")] + public OperationDataResult> GetAllUsers(PaginationModel paginationModel) + { + try + { + var userList = _dbContext.Users.Include(x => x.Roles).ToList(); + + var model = userList.Select(user => new UserInfoViewModel + { + FirstName = user.FirstName, + LastName = user.LastName, + Email = user.Email, + Id = user.Id + }) + .ToList(); + + return new OperationDataResult>(true, model); + } + catch (Exception exception) + { + return new OperationDataResult>(false, "Error when obtaining users"); + } + } + + [HttpPost] + [Route("update-user")] + public OperationResult UpdateUser(UserRegisterModel userRegisterModel) + { + try + { + var user = _dbContext.Users.Include(x => x.Roles).FirstOrDefault(x => x.Id == userRegisterModel.Id); + + if (user == null) throw new Exception(); + + + if (userRegisterModel.Password.Equals(userRegisterModel.PasswordConfimation)) + { + user.Email = userRegisterModel.Email; + user.UserName = userRegisterModel.UserName; + user.FirstName = userRegisterModel.FirstName; + user.LastName = userRegisterModel.LastName; + user.PasswordHash = new PasswordHasher().HashPassword(userRegisterModel.Password); + } + + _dbContext.Entry(user).State = EntityState.Modified; + _dbContext.SaveChanges(); + + return new OperationResult (true, $"User {userRegisterModel.Id} was updated"); + } + catch (Exception exception) + { + return new OperationResult(false, "Error when updating user"); + } + } + + [HttpPost] + [Route("delete-user/{userId}")] + public OperationResult DeleteUser(int userId) + { + try + { + var user = _dbContext.Users.Include(x => x.Roles).FirstOrDefault(x => x.Id == userId); + + if (user == null) throw new Exception(); + + _dbContext.Entry(user).State = EntityState.Deleted; + + return new OperationResult(true, $"User {userId} was deleted"); + } + catch (Exception exception) + { + return new OperationResult(false, "Error while deleting user"); + } + } + } +} \ No newline at end of file diff --git a/eFormAPI/eFormAPI/Controllers/CasesController.cs b/eFormAPI/eFormAPI/Controllers/CasesController.cs index 32c9277d97..5a9fd9177f 100644 --- a/eFormAPI/eFormAPI/Controllers/CasesController.cs +++ b/eFormAPI/eFormAPI/Controllers/CasesController.cs @@ -9,6 +9,7 @@ namespace eFormAPI.Web.Controllers { + [Authorize] public class CasesController : ApiController { private readonly EFormCoreHelper _coreHelper = new EFormCoreHelper(); diff --git a/eFormAPI/eFormAPI/Controllers/EntitySearchController.cs b/eFormAPI/eFormAPI/Controllers/EntitySearchController.cs index 49b7db6ca3..5e22bfed34 100644 --- a/eFormAPI/eFormAPI/Controllers/EntitySearchController.cs +++ b/eFormAPI/eFormAPI/Controllers/EntitySearchController.cs @@ -8,6 +8,7 @@ namespace eFormAPI.Web.Controllers { + [Authorize] public class EntitySearchController : ApiController { private readonly EFormCoreHelper _coreHelper = new EFormCoreHelper(); diff --git a/eFormAPI/eFormAPI/Controllers/SettingsController.cs b/eFormAPI/eFormAPI/Controllers/SettingsController.cs index 67630a334f..a89afb263a 100644 --- a/eFormAPI/eFormAPI/Controllers/SettingsController.cs +++ b/eFormAPI/eFormAPI/Controllers/SettingsController.cs @@ -56,15 +56,15 @@ public OperationResult ConnectionString(SettingsModel settingsModel) { if (File.Exists(inputPath)) { - File.Delete(inputPath); - var fileStream = File.Create(inputPath); - fileStream.Dispose(); - } - else - { - var fileStream = File.Create(inputPath); - fileStream.Dispose(); + //File.Delete(inputPath); + //var fileStream = File.Create(inputPath); + //fileStream.Dispose(); + return new OperationResult(false, "Connection string already exist"); } + + var fileStream = File.Create(inputPath); + fileStream.Dispose(); + File.WriteAllText(inputPath, sdkConnectionString); } catch (Exception exception) diff --git a/eFormAPI/eFormAPI/Controllers/SimpleSitesController.cs b/eFormAPI/eFormAPI/Controllers/SimpleSitesController.cs index 06367b2950..1c2e6395e6 100644 --- a/eFormAPI/eFormAPI/Controllers/SimpleSitesController.cs +++ b/eFormAPI/eFormAPI/Controllers/SimpleSitesController.cs @@ -9,6 +9,7 @@ namespace eFormAPI.Web.Controllers { + [Authorize] public class SimpleSitesController : ApiController { private readonly EFormCoreHelper _coreHelper = new EFormCoreHelper(); diff --git a/eFormAPI/eFormAPI/Controllers/SitesController.cs b/eFormAPI/eFormAPI/Controllers/SitesController.cs index be949f89d8..e091396910 100644 --- a/eFormAPI/eFormAPI/Controllers/SitesController.cs +++ b/eFormAPI/eFormAPI/Controllers/SitesController.cs @@ -10,6 +10,7 @@ namespace eFormAPI.Web.Controllers { + [Authorize] public class SitesController : ApiController { private readonly EFormCoreHelper _coreHelper = new EFormCoreHelper(); diff --git a/eFormAPI/eFormAPI/Controllers/TemplatesController.cs b/eFormAPI/eFormAPI/Controllers/TemplatesController.cs index efd9b6f1ec..957f2b2bf0 100644 --- a/eFormAPI/eFormAPI/Controllers/TemplatesController.cs +++ b/eFormAPI/eFormAPI/Controllers/TemplatesController.cs @@ -15,6 +15,7 @@ namespace eFormAPI.Web.Controllers { + [Authorize] public class TemplatesController : ApiController { private readonly EFormCoreHelper _coreHelper = new EFormCoreHelper(); diff --git a/eFormAPI/eFormAPI/Controllers/UnitsController.cs b/eFormAPI/eFormAPI/Controllers/UnitsController.cs index 1e37e24f91..11f6e1bf0b 100644 --- a/eFormAPI/eFormAPI/Controllers/UnitsController.cs +++ b/eFormAPI/eFormAPI/Controllers/UnitsController.cs @@ -7,6 +7,7 @@ namespace eFormAPI.Web.Controllers { + [Authorize] public class UnitsController : ApiController { private readonly EFormCoreHelper _coreHelper = new EFormCoreHelper(); diff --git a/eFormAPI/eFormAPI/Controllers/WorkersController.cs b/eFormAPI/eFormAPI/Controllers/WorkersController.cs index 74973f91f1..c6fd877cb1 100644 --- a/eFormAPI/eFormAPI/Controllers/WorkersController.cs +++ b/eFormAPI/eFormAPI/Controllers/WorkersController.cs @@ -9,6 +9,7 @@ namespace eFormAPI.Web.Controllers { + [Authorize] public class WorkersController : ApiController { private readonly EFormCoreHelper _coreHelper = new EFormCoreHelper(); diff --git a/eFormAPI/eFormAPI/Infrastructure/Data/Entities/EformUser.cs b/eFormAPI/eFormAPI/Infrastructure/Data/Entities/EformUser.cs index 3061b10f30..2f5fed5b50 100644 --- a/eFormAPI/eFormAPI/Infrastructure/Data/Entities/EformUser.cs +++ b/eFormAPI/eFormAPI/Infrastructure/Data/Entities/EformUser.cs @@ -8,6 +8,8 @@ namespace eFormAPI.Web.Infrastructure.Data.Entities public class EformUser : IdentityUser { + public string FirstName { get; set; } + public string LastName { get; set; } public async Task GenerateUserIdentityAsync( UserManager manager, string authenticationType) { diff --git a/eFormAPI/eFormAPI/Migrations/201707270906018_UserFirstLast.Designer.cs b/eFormAPI/eFormAPI/Migrations/201707270906018_UserFirstLast.Designer.cs new file mode 100644 index 0000000000..2d0d7b4453 --- /dev/null +++ b/eFormAPI/eFormAPI/Migrations/201707270906018_UserFirstLast.Designer.cs @@ -0,0 +1,29 @@ +// +namespace eFormAPI.Web.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] + public sealed partial class UserFirstLast : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(UserFirstLast)); + + string IMigrationMetadata.Id + { + get { return "201707270906018_UserFirstLast"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/eFormAPI/eFormAPI/Migrations/201707270906018_UserFirstLast.cs b/eFormAPI/eFormAPI/Migrations/201707270906018_UserFirstLast.cs new file mode 100644 index 0000000000..82523cb57f --- /dev/null +++ b/eFormAPI/eFormAPI/Migrations/201707270906018_UserFirstLast.cs @@ -0,0 +1,20 @@ +namespace eFormAPI.Web.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class UserFirstLast : DbMigration + { + public override void Up() + { + AddColumn("dbo.Users", "FirstName", c => c.String()); + AddColumn("dbo.Users", "LastName", c => c.String()); + } + + public override void Down() + { + DropColumn("dbo.Users", "LastName"); + DropColumn("dbo.Users", "FirstName"); + } + } +} diff --git a/eFormAPI/eFormAPI/Migrations/201707270906018_UserFirstLast.resx b/eFormAPI/eFormAPI/Migrations/201707270906018_UserFirstLast.resx new file mode 100644 index 0000000000..6e992a54c9 --- /dev/null +++ b/eFormAPI/eFormAPI/Migrations/201707270906018_UserFirstLast.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/eFormAPI/eFormAPI/Migrations/EformMigrationsConfiguration.cs b/eFormAPI/eFormAPI/Migrations/EformMigrationsConfiguration.cs index 428feff49e..f655291946 100644 --- a/eFormAPI/eFormAPI/Migrations/EformMigrationsConfiguration.cs +++ b/eFormAPI/eFormAPI/Migrations/EformMigrationsConfiguration.cs @@ -45,11 +45,15 @@ protected override void Seed(BaseDbContext context) { UserName = "admin", Email = "admin@mail.com", - EmailConfirmed = true, + FirstName = "admin", + LastName = "admin", + EmailConfirmed = true }; var testUser = new EformUser() { UserName = "test", + FirstName = "John", + LastName = "Smith", Email = "test@mail.com", EmailConfirmed = true, }; diff --git a/eFormAPI/eFormAPI/eFormAPI.Web.csproj b/eFormAPI/eFormAPI/eFormAPI.Web.csproj index 86b94f94fd..217e0d27ec 100644 --- a/eFormAPI/eFormAPI/eFormAPI.Web.csproj +++ b/eFormAPI/eFormAPI/eFormAPI.Web.csproj @@ -232,6 +232,7 @@ + @@ -263,6 +264,10 @@ 201707190837078_InitialCreate.cs + + + 201707270906018_UserFirstLast.cs + @@ -303,6 +308,9 @@ 201707190837078_InitialCreate.cs + + 201707270906018_UserFirstLast.cs + 10.0 diff --git a/eFormAPI/eFromAPI.Common/Models/Auth/RoleBindingModels.cs b/eFormAPI/eFromAPI.Common/Models/Auth/RoleBindingModels.cs index 649df392a4..dd30b78b2e 100644 --- a/eFormAPI/eFromAPI.Common/Models/Auth/RoleBindingModels.cs +++ b/eFormAPI/eFromAPI.Common/Models/Auth/RoleBindingModels.cs @@ -86,7 +86,8 @@ public class UserInfoViewModel { public int Id { get; set; } public DateTime CreatedDate { get; set; } - public string UserName { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } public string Email { get; set; } public string Role { get; set; } } diff --git a/eFormAPI/eFromAPI.Common/Models/PaginationModel.cs b/eFormAPI/eFromAPI.Common/Models/PaginationModel.cs new file mode 100644 index 0000000000..997f898a62 --- /dev/null +++ b/eFormAPI/eFromAPI.Common/Models/PaginationModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace eFromAPI.Common.Models +{ + public class PaginationModel + { + public int PageIndex { get; set; } + public int PageSize { get; set; } + public int Offset { get; set; } + } +} diff --git a/eFormAPI/eFromAPI.Common/Models/User/UserRegisterModel.cs b/eFormAPI/eFromAPI.Common/Models/User/UserRegisterModel.cs new file mode 100644 index 0000000000..206072cca5 --- /dev/null +++ b/eFormAPI/eFromAPI.Common/Models/User/UserRegisterModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace eFromAPI.Common.Models.User +{ + public class UserRegisterModel + { + public int Id { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + public string UserName { get; set; } + public string Email { get; set; } + public string Password { get; set; } + public string PasswordConfimation { get; set; } + public string Role { get; set; } + } +} diff --git a/eFormAPI/eFromAPI.Common/eFromAPI.Common.csproj b/eFormAPI/eFromAPI.Common/eFromAPI.Common.csproj index 450d8a64e7..7fe1d24ba7 100644 --- a/eFormAPI/eFromAPI.Common/eFromAPI.Common.csproj +++ b/eFormAPI/eFromAPI.Common/eFromAPI.Common.csproj @@ -92,6 +92,7 @@ + @@ -105,6 +106,7 @@ + diff --git a/eform-client/src/app/components/navigation/navigation.component.html b/eform-client/src/app/components/navigation/navigation.component.html index 2679a62108..a3e7e547d0 100644 --- a/eform-client/src/app/components/navigation/navigation.component.html +++ b/eform-client/src/app/components/navigation/navigation.component.html @@ -3,7 +3,7 @@
diff --git a/eform-client/src/app/modules/admin/components/user-edit/user-edit.component.ts b/eform-client/src/app/modules/admin/components/user-edit/user-edit.component.ts index 8d30396acc..c37028d1e3 100644 --- a/eform-client/src/app/modules/admin/components/user-edit/user-edit.component.ts +++ b/eform-client/src/app/modules/admin/components/user-edit/user-edit.component.ts @@ -3,7 +3,7 @@ import {AdvEntityGroupEditModel, AdvEntityItemModel} from 'app/models/advanced'; import {AdminService, EntitySearchService} from 'app/services'; import {ModalComponent} from 'ng2-bs3-modal/ng2-bs3-modal'; import {NotifyService} from 'app/services/notify.service'; -import {UserRegisterModel} from 'app/models/user'; +import {UserInfoModel, UserRegisterModel} from 'app/models/user'; @Component({ selector: 'user-edit', @@ -29,25 +29,38 @@ export class UserEditComponent implements OnChanges { } createUser() { - debugger; this.adminService.createUser(this.newUserModel).subscribe((data) => { - this.newUserModel = new UserRegisterModel; - this.onUserChanged.emit(); + if (data.success) { + this.newUserModel = new UserRegisterModel; + this.notifyService.success({text: data.message || 'Error'}); + this.onUserChanged.emit(); + } else { + this.notifyService.error({text: data.message || 'Error'}); + } }); } updateUser() { this.adminService.updateUser(this.selectedUserModel).subscribe((data) => { - this.onUserChanged.emit(); + if (data.success) { + this.notifyService.success({text: data.message || 'Error'}); + this.onUserChanged.emit(); + } else { + this.notifyService.error({text: data.message || 'Error'}); + } }); } getUserInfo() { - this.adminService.getUser(this.selectedId).subscribe((data) => { - if (data && data.model) { - this.selectedUserModel = data.model; - } - }); + if (this.selectedId) { + this.adminService.getUser(this.selectedId).subscribe((data) => { + if (data && data.model) { + this.selectedUserModel = data.model; + } + }); + } else { + this.selectedUserModel = Object.assign({}, new UserRegisterModel()); + } } openEditUserModal(model: UserRegisterModel) { diff --git a/eform-client/src/app/modules/admin/components/user-grid/user-grid.component.html b/eform-client/src/app/modules/admin/components/user-grid/user-grid.component.html index 7afbedd161..e23e1009f9 100644 --- a/eform-client/src/app/modules/admin/components/user-grid/user-grid.component.html +++ b/eform-client/src/app/modules/admin/components/user-grid/user-grid.component.html @@ -10,7 +10,7 @@ Email - Created date + Full name Role @@ -28,7 +28,7 @@ {{userInfoModel.email}} - {{userInfoModel.createdDate}} + {{userInfoModel.firstName}} {{userInfoModel.lastName}} {{userInfoModel.role}} @@ -41,7 +41,7 @@ @@ -66,19 +66,19 @@
-
1
+
{{selectedUser.id}}
-
-
27/04/2017
+
+
{{selectedUser.email}}
-
-
gid733@ya.ru
+
+
{{selectedUser.firstName}} {{selectedUser.lastName}}
-
User
+
{{selectedUser.role}}
diff --git a/eform-client/src/app/modules/admin/components/user-grid/user-grid.component.ts b/eform-client/src/app/modules/admin/components/user-grid/user-grid.component.ts index 0e42546e47..289846a7a6 100644 --- a/eform-client/src/app/modules/admin/components/user-grid/user-grid.component.ts +++ b/eform-client/src/app/modules/admin/components/user-grid/user-grid.component.ts @@ -2,6 +2,8 @@ import {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angula import {Router} from '@angular/router'; import {ModalComponent} from 'ng2-bs3-modal/ng2-bs3-modal'; import {UserInfoModel} from 'app/models/user'; +import {AdminService} from 'app/services'; +import {NotifyService} from 'app/services/notify.service'; @Component({ selector: 'user-grid', @@ -14,13 +16,16 @@ export class UserGridComponent implements OnInit { @Output() onUserListChanged: EventEmitter = new EventEmitter(); @Output() onUserSelectedForEdit: EventEmitter = new EventEmitter(); - constructor(private router: Router) { + selectedUser: UserInfoModel = new UserInfoModel; + + constructor(private router: Router, private adminService: AdminService, private notifyService: NotifyService) { } ngOnInit() { } - showDeleteUserModal() { + showDeleteUserModal(model: UserInfoModel) { + this.selectedUser = model; this.deleteUserModal.open().then(); } @@ -29,6 +34,12 @@ export class UserGridComponent implements OnInit { } deleteUser() { - + this.adminService.deleteUser(this.selectedUser.id).subscribe((data) => { + if (data.success) { + this.notifyService.success({text: data.message || 'Error'}); + } else { + this.notifyService.error({text: data.message || 'Error'}); + } + }); } } diff --git a/eform-client/src/app/modules/helpers/app.constants.ts b/eform-client/src/app/modules/helpers/app.constants.ts index 63b937875a..2e18b3c317 100644 --- a/eform-client/src/app/modules/helpers/app.constants.ts +++ b/eform-client/src/app/modules/helpers/app.constants.ts @@ -56,7 +56,7 @@ export let AdvSearchableEntityMethods = { export let AdminMethods = { GetCurrentUser: '/api/account/user-info', - GetUser: '/api/admin/get-users', + GetUser: '/api/admin/user', GetAllUsers: '/api/admin/get-users', DeleteUser: '/api/admin/delete-user', CreateUser: '/api/admin/create-user', diff --git a/eform-client/src/app/services/admin.service.ts b/eform-client/src/app/services/admin.service.ts index a1e41a9c4c..e4233278ef 100644 --- a/eform-client/src/app/services/admin.service.ts +++ b/eform-client/src/app/services/admin.service.ts @@ -41,7 +41,7 @@ export class AdminService extends BaseService { return this.postModelOperationResult(AdminMethods.UpdateUser, model); } - public deleteUser = (userId: string): Observable => { + public deleteUser = (userId: number): Observable => { return this.getWithOperationResult(AdminMethods.DeleteUser + '/' + userId); } }