From 53a717aa8aee13ab973b39b69886f66529320e1a Mon Sep 17 00:00:00 2001 From: "Jamie.Rees" Date: Tue, 26 Sep 2017 16:31:37 +0100 Subject: [PATCH] !wip #1456 --- .../Jobs/Plex/PlexUserImporter.cs | 2 +- .../Settings/Models/UserManagementSettings.cs | 3 +- src/Ombi/ClientApp/app/interfaces/ICommon.ts | 5 +++ .../ClientApp/app/interfaces/ISettings.ts | 7 ++++ src/Ombi/ClientApp/app/interfaces/IUser.ts | 9 ++-- .../app/services/settings.service.ts | 11 +++++ .../usermanagement.component.html | 42 +++++++++++++++++++ .../usermanagement.component.ts | 40 +++++++++++++++++- .../usermanagement-add.component.ts | 3 +- src/Ombi/Controllers/SettingsController.cs | 21 ++++++++++ 10 files changed, 131 insertions(+), 12 deletions(-) diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexUserImporter.cs b/src/Ombi.Schedule/Jobs/Plex/PlexUserImporter.cs index f7eb32ded..85e6e053e 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexUserImporter.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexUserImporter.cs @@ -34,7 +34,7 @@ namespace Ombi.Schedule.Jobs.Plex public async Task Start() { var userManagementSettings = await _userManagementSettings.GetSettingsAsync(); - if (!userManagementSettings.ImportMediaServerUsers) + if (!userManagementSettings.ImportPlexUsers) { return; } diff --git a/src/Ombi.Settings/Settings/Models/UserManagementSettings.cs b/src/Ombi.Settings/Settings/Models/UserManagementSettings.cs index 1428801c2..32aa3c5c1 100644 --- a/src/Ombi.Settings/Settings/Models/UserManagementSettings.cs +++ b/src/Ombi.Settings/Settings/Models/UserManagementSettings.cs @@ -4,7 +4,8 @@ namespace Ombi.Settings.Settings.Models { public class UserManagementSettings : Settings { - public bool ImportMediaServerUsers { get; set; } + public bool ImportPlexUsers { get; set; } + public bool ImportEmbyUsers { get; set; } public List DefaultRoles { get; set; } } } \ No newline at end of file diff --git a/src/Ombi/ClientApp/app/interfaces/ICommon.ts b/src/Ombi/ClientApp/app/interfaces/ICommon.ts index 4b2f92fd9..17a7f0546 100644 --- a/src/Ombi/ClientApp/app/interfaces/ICommon.ts +++ b/src/Ombi/ClientApp/app/interfaces/ICommon.ts @@ -16,3 +16,8 @@ export interface IQuality { id: number; name: string; } + +export interface ICheckbox { + value: string; + enabled: boolean; +} diff --git a/src/Ombi/ClientApp/app/interfaces/ISettings.ts b/src/Ombi/ClientApp/app/interfaces/ISettings.ts index 2dfcdad32..9a10e5388 100644 --- a/src/Ombi/ClientApp/app/interfaces/ISettings.ts +++ b/src/Ombi/ClientApp/app/interfaces/ISettings.ts @@ -1,4 +1,5 @@ import { ISettings } from "./ICommon"; +import { ICheckbox } from "./index"; export interface IExternalSettings extends ISettings { ssl: boolean; @@ -102,6 +103,12 @@ export interface IAuthenticationSettings extends ISettings { requireUppercase: boolean; } +export interface IUserManagementSettings extends ISettings { + importPlexUsers: boolean; + importEmbyUsers: boolean; + defaultClaims: ICheckbox[]; +} + export interface IAbout { version: string; branch: string; diff --git a/src/Ombi/ClientApp/app/interfaces/IUser.ts b/src/Ombi/ClientApp/app/interfaces/IUser.ts index 4e8fd40b0..5e42afafe 100644 --- a/src/Ombi/ClientApp/app/interfaces/IUser.ts +++ b/src/Ombi/ClientApp/app/interfaces/IUser.ts @@ -1,4 +1,6 @@ -export interface IUser { +import { ICheckbox } from "./index"; + +export interface IUser { id: string; username: string; alias: string; @@ -17,11 +19,6 @@ export enum UserType { EmbyUser = 3, } -export interface ICheckbox { - value: string; - enabled: boolean; -} - export interface IIdentityResult { errors: string[]; successful: boolean; diff --git a/src/Ombi/ClientApp/app/services/settings.service.ts b/src/Ombi/ClientApp/app/services/settings.service.ts index 74864aa87..98e929d09 100644 --- a/src/Ombi/ClientApp/app/services/settings.service.ts +++ b/src/Ombi/ClientApp/app/services/settings.service.ts @@ -20,6 +20,7 @@ import { ISlackNotificationSettings, ISonarrSettings, IUpdateSettings, + IUserManagementSettings, } from "../interfaces"; import { ServiceAuthHelpers } from "./service.helpers"; @@ -182,4 +183,14 @@ export class SettingsService extends ServiceAuthHelpers { .post(`${this.url}/update`, JSON.stringify(settings), { headers: this.headers }) .map(this.extractData).catch(this.handleError); } + + public getUserManagementSettings(): Observable { + return this.httpAuth.get(`${this.url}/UserManagement`).map(this.extractData).catch(this.handleError); + } + + public saveUserManagementSettings(settings: IUserManagementSettings): Observable { + return this.httpAuth + .post(`${this.url}/UserManagement`, JSON.stringify(settings), { headers: this.headers }) + .map(this.extractData).catch(this.handleError); + } } diff --git a/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.html b/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.html index 597a733f4..c66e6f428 100644 --- a/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.html +++ b/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.html @@ -1 +1,43 @@  +
+ User Management Settings + +
+
+ +
+
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+
+
+

Default Roles

+ +
+
+
+ + + +
+
+
+ +
+
\ No newline at end of file diff --git a/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.ts b/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.ts index 277409648..b0cd5fff0 100644 --- a/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.ts +++ b/src/Ombi/ClientApp/app/settings/usermanagement/usermanagement.component.ts @@ -1,6 +1,42 @@ -import { Component } from "@angular/core"; +import { Component, OnInit } from "@angular/core"; + +import { ICheckbox, IUserManagementSettings } from "../../interfaces"; +import { IdentityService, SettingsService } from "../../services"; @Component({ templateUrl: "./usermanagement.component.html", }) -export class UserManagementComponent { } +export class UserManagementComponent implements OnInit { + + public plexEnabled: boolean; + public embyEnabled: boolean; + public settings: IUserManagementSettings; + public claims: ICheckbox[]; + + constructor(private settingsService: SettingsService, + //private notificationService: NotificationService, + private identityService: IdentityService) { + + } + + public ngOnInit(): void { + this.settingsService.getUserManagementSettings().subscribe(x => { + this.settings = x; + this.identityService.getAllAvailableClaims().subscribe(c => { + + this.claims = c; + this.claims.forEach((claim) => { + if (this.settings.defaultClaims) { + const hasClaim = this.settings.defaultClaims.some((item) => { + return item.value === claim.value && item.enabled; + }); + claim.enabled = hasClaim; + } + }); + }); + }); + this.settingsService.getPlex().subscribe(x => this.plexEnabled = x.enable); + this.settingsService.getEmby().subscribe(x => this.embyEnabled = x.enable); + + } +} diff --git a/src/Ombi/ClientApp/app/usermanagement/usermanagement-add.component.ts b/src/Ombi/ClientApp/app/usermanagement/usermanagement-add.component.ts index 9786e0452..3f7b4a3af 100644 --- a/src/Ombi/ClientApp/app/usermanagement/usermanagement-add.component.ts +++ b/src/Ombi/ClientApp/app/usermanagement/usermanagement-add.component.ts @@ -2,8 +2,7 @@ import { Router } from "@angular/router"; import { ICheckbox, IUser, UserType } from "../interfaces"; -import { IdentityService } from "../services"; -import { NotificationService } from "../services"; +import { IdentityService, NotificationService } from "../services"; @Component({ templateUrl: "./usermanagement-add.component.html", diff --git a/src/Ombi/Controllers/SettingsController.cs b/src/Ombi/Controllers/SettingsController.cs index 98e2ae399..c45ba689d 100644 --- a/src/Ombi/Controllers/SettingsController.cs +++ b/src/Ombi/Controllers/SettingsController.cs @@ -306,6 +306,27 @@ namespace Ombi.Controllers return await Save(settings); } + /// + /// Gets the UserManagement Settings. + /// + /// + [HttpGet("UserManagement")] + public async Task UserManagementSettings() + { + return await Get(); + } + + /// + /// Save the UserManagement settings. + /// + /// The settings. + /// + [HttpPost("UserManagement")] + public async Task UserManagementSettings([FromBody]UserManagementSettings settings) + { + return await Save(settings); + } + /// /// Gets the Update Settings. ///