From 8a14427cea4e0f17e28d8d654e0a017eda18c282 Mon Sep 17 00:00:00 2001 From: TidusJar Date: Sun, 15 May 2016 23:55:55 -0400 Subject: [PATCH] A bit more work on switching to using user claims so we can support multiple users --- PlexRequests.UI/Modules/BaseAuthModule.cs | 10 ++++++- PlexRequests.UI/Modules/RequestsModule.cs | 35 +++++++++-------------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/PlexRequests.UI/Modules/BaseAuthModule.cs b/PlexRequests.UI/Modules/BaseAuthModule.cs index 1cb5fe225..45e55fc81 100644 --- a/PlexRequests.UI/Modules/BaseAuthModule.cs +++ b/PlexRequests.UI/Modules/BaseAuthModule.cs @@ -23,6 +23,9 @@ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // ************************************************************************/ +using System.Linq; + + #endregion using Nancy; @@ -55,7 +58,12 @@ namespace PlexRequests.UI.Modules } } - protected bool IsAdmin => Context.CurrentUser.IsAuthenticated(); + protected bool IsAdmin { get { + var claims = Context.CurrentUser.Claims.ToList(); + if(claims.Contains(UserClaims.Admin) || claims.Contains(UserClaims.PowerUser)){ + return true;} + return false; + } } protected int DateTimeOffset { diff --git a/PlexRequests.UI/Modules/RequestsModule.cs b/PlexRequests.UI/Modules/RequestsModule.cs index bb3bd7b49..c01d6afd0 100644 --- a/PlexRequests.UI/Modules/RequestsModule.cs +++ b/PlexRequests.UI/Modules/RequestsModule.cs @@ -108,7 +108,6 @@ namespace PlexRequests.UI.Modules private Response GetMovies() // TODO: async await the API calls { var settings = PrSettings.GetSettings(); - var isAdmin = Context.CurrentUser.IsAuthenticated(); List taskList = new List(); @@ -130,7 +129,7 @@ namespace PlexRequests.UI.Modules List qualities = new List(); - if (isAdmin) + if (IsAdmin) { var cpSettings = CpSettings.GetSettings(); if (cpSettings.Enabled) @@ -185,7 +184,6 @@ namespace PlexRequests.UI.Modules private Response GetTvShows() // TODO: async await the API calls { var settings = PrSettings.GetSettings(); - var isAdmin = Context.CurrentUser.IsAuthenticated(); List taskList = new List(); @@ -198,14 +196,14 @@ namespace PlexRequests.UI.Modules { dbTv = t.Result.ToList(); - if (settings.UsersCanViewOnlyOwnRequests && !isAdmin) + if (settings.UsersCanViewOnlyOwnRequests && !IsAdmin) { dbTv = dbTv.Where(x => x.UserHasRequested(Username)).ToList(); } })); List qualities = new List(); - if (isAdmin) + if (IsAdmin) { var sonarrSettings = SonarrSettings.GetSettings(); if (sonarrSettings.Enabled) @@ -251,10 +249,10 @@ namespace PlexRequests.UI.Modules Approved = tv.Available || tv.Approved, Title = tv.Title, Overview = tv.Overview, - RequestedUsers = isAdmin ? tv.AllUsers.ToArray() : new string[] { }, + RequestedUsers = IsAdmin ? tv.AllUsers.ToArray() : new string[] { }, ReleaseYear = tv.ReleaseDate.Year.ToString(), Available = tv.Available, - Admin = isAdmin, + Admin = IsAdmin, Issues = tv.Issues.ToString().CamelCaseToWords(), OtherMessage = tv.OtherMessage, AdminNotes = tv.AdminNote, @@ -269,7 +267,6 @@ namespace PlexRequests.UI.Modules private Response GetAlbumRequests() { var settings = PrSettings.GetSettings(); - var isAdmin = Context.CurrentUser.IsAuthenticated(); var dbAlbum = Service.GetAll().Where(x => x.Type == RequestType.Album); if (settings.UsersCanViewOnlyOwnRequests && !isAdmin) { @@ -294,10 +291,10 @@ namespace PlexRequests.UI.Modules Approved = album.Available || album.Approved, Title = album.Title, Overview = album.Overview, - RequestedUsers = isAdmin ? album.AllUsers.ToArray() : new string[] { }, + RequestedUsers = IsAdmin ? album.AllUsers.ToArray() : new string[] { }, ReleaseYear = album.ReleaseDate.Year.ToString(), Available = album.Available, - Admin = isAdmin, + Admin = IsAdmin, Issues = album.Issues.ToString().CamelCaseToWords(), OtherMessage = album.OtherMessage, AdminNotes = album.AdminNote, @@ -312,11 +309,8 @@ namespace PlexRequests.UI.Modules } private Response DeleteRequest(int requestid) - { - if (!Context.CurrentUser.IsAuthenticated()) - { - return Response.AsJson(new JsonResponseModel { Result = false, Message = "You are not an Admin, so you cannot delete any requests." }); - } + { + this.RequiresClaims (UserClaims.PowerUser, UserClaims.Admin); var currentEntity = Service.Get(requestid); Service.DeleteRequest(currentEntity); @@ -363,10 +357,7 @@ namespace PlexRequests.UI.Modules private Response ClearIssue(int requestId) { - if (!Context.CurrentUser.IsAuthenticated()) - { - return Response.AsJson(new JsonResponseModel { Result = false, Message = "You are not an Admin, so you cannot clear any issues." }); - } + this.RequiresClaims (UserClaims.PowerUser, UserClaims.Admin); var originalRequest = Service.Get(requestId); if (originalRequest == null) @@ -383,7 +374,8 @@ namespace PlexRequests.UI.Modules } private Response ChangeRequestAvailability(int requestId, bool available) - { + { + this.RequiresClaims (UserClaims.PowerUser, UserClaims.Admin); var originalRequest = Service.Get(requestId); if (originalRequest == null) { @@ -399,7 +391,8 @@ namespace PlexRequests.UI.Modules } private Response AddNote(int requestId, string noteArea) - { + { + this.RequiresClaims (UserClaims.PowerUser, UserClaims.Admin); var originalRequest = Service.Get(requestId); if (originalRequest == null) {