mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-19 21:03:17 -07:00
some small tweaks around #218
Just added the link to the settings and some angular improvements
This commit is contained in:
parent
f8aaa993e2
commit
b03d9ef16e
5 changed files with 149 additions and 103 deletions
|
@ -38,6 +38,14 @@ namespace PlexRequests.Core.Users
|
||||||
{
|
{
|
||||||
permission += (int)Permissions.ReportIssue;
|
permission += (int)Permissions.ReportIssue;
|
||||||
}
|
}
|
||||||
|
if (settings.UsersCanViewOnlyOwnRequests)
|
||||||
|
{
|
||||||
|
permission += (int)Permissions.UsersCanViewOnlyOwnRequests;
|
||||||
|
}
|
||||||
|
if (settings.UsersCanViewOnlyOwnIssues)
|
||||||
|
{
|
||||||
|
permission += (int)Permissions.UsersCanViewOnlyOwnIssues;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return permission;
|
return permission;
|
||||||
|
|
|
@ -31,6 +31,9 @@ using System.ComponentModel.DataAnnotations;
|
||||||
namespace PlexRequests.Helpers.Permissions
|
namespace PlexRequests.Helpers.Permissions
|
||||||
{
|
{
|
||||||
[Flags]
|
[Flags]
|
||||||
|
////
|
||||||
|
//// NOTE if any are added, make sure we change the UserManagementHelper
|
||||||
|
////
|
||||||
public enum Permissions
|
public enum Permissions
|
||||||
{
|
{
|
||||||
[Display(Name = "Access Administration Settings")]
|
[Display(Name = "Access Administration Settings")]
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
$scope.sortReverse = false;
|
$scope.sortReverse = false;
|
||||||
$scope.searchTerm = "";
|
$scope.searchTerm = "";
|
||||||
|
|
||||||
|
$scope.hideColumns = false;
|
||||||
|
|
||||||
|
|
||||||
$scope.error = {
|
$scope.error = {
|
||||||
error: false,
|
error: false,
|
||||||
|
@ -35,10 +37,7 @@
|
||||||
});
|
});
|
||||||
$scope.selectedUser = user[0];
|
$scope.selectedUser = user[0];
|
||||||
|
|
||||||
if (!open) {
|
openSidebar();
|
||||||
$("#wrapper").toggleClass("toggled");
|
|
||||||
open = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get all users in the system
|
// Get all users in the system
|
||||||
|
@ -163,6 +162,11 @@
|
||||||
return closeSidebar();
|
return closeSidebar();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$scope.redirectToSettings = function() {
|
||||||
|
var url = createBaseUrl(getBaseUrl(), '/admin/usermanagementsettings');
|
||||||
|
window.location.href = url;
|
||||||
|
}
|
||||||
|
|
||||||
function removeUser(id, current) {
|
function removeUser(id, current) {
|
||||||
$scope.users = $scope.users.filter(function (user) {
|
$scope.users = $scope.users.filter(function (user) {
|
||||||
return user.id !== id;
|
return user.id !== id;
|
||||||
|
@ -176,6 +180,15 @@
|
||||||
if (open) {
|
if (open) {
|
||||||
open = false;
|
open = false;
|
||||||
$("#wrapper").toggleClass("toggled");
|
$("#wrapper").toggleClass("toggled");
|
||||||
|
$scope.hideColumns = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function openSidebar() {
|
||||||
|
if (!open) {
|
||||||
|
$("#wrapper").toggleClass("toggled");
|
||||||
|
open = true;
|
||||||
|
$scope.hideColumns = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,12 +202,17 @@
|
||||||
entry.selected = false;
|
entry.selected = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getBaseUrl() {
|
||||||
|
return $('#baseUrl').text();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function successCallback(message, type) {
|
function successCallback(message, type) {
|
||||||
generateNotify(message, type);
|
generateNotify(message, type);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
angular.module('PlexRequests').controller('userManagementController', ["$scope", "userManagementService", "moment", controller]);
|
angular.module('PlexRequests').controller('userManagementController', ["$scope", "userManagementService", "moment", controller]);
|
||||||
} ());
|
}());
|
|
@ -18,6 +18,8 @@
|
||||||
@Html.Checkbox(Model.AutoApproveTvShows, "AutoApproveTvShows", "Auto Approve TV Show Requests")
|
@Html.Checkbox(Model.AutoApproveTvShows, "AutoApproveTvShows", "Auto Approve TV Show Requests")
|
||||||
@Html.Checkbox(Model.AutoApproveMusic, "AutoApproveMusic", "Auto Approve Music Requests")
|
@Html.Checkbox(Model.AutoApproveMusic, "AutoApproveMusic", "Auto Approve Music Requests")
|
||||||
@Html.Checkbox(Model.ReportIssues, "ReportIssues", "Report Issues")
|
@Html.Checkbox(Model.ReportIssues, "ReportIssues", "Report Issues")
|
||||||
|
@Html.Checkbox(Model.UsersCanViewOnlyOwnIssues, "UsersCanViewOnlyOwnIssues", "Users can only view their own issues")
|
||||||
|
@Html.Checkbox(Model.UsersCanViewOnlyOwnRequests, "UsersCanViewOnlyOwnRequests", "Users can only view their own requests")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
{{spinnerActive}}
|
{{spinnerActive}}
|
||||||
<!--Sidebar-->
|
<!--Sidebar-->
|
||||||
<div id="sidebar-wrapper" class="shadow">
|
<div id="sidebar-wrapper" class="shadow">
|
||||||
<br/>
|
<br />
|
||||||
<br/>
|
<br />
|
||||||
<img ng-show="selectedUser.plexInfo.thumb" class="col-md-pull-1 img-circle" style="position: absolute" ng-src="{{selectedUser.plexInfo.thumb}}"/>
|
<img ng-show="selectedUser.plexInfo.thumb" class="col-md-pull-1 img-circle" style="position: absolute" ng-src="{{selectedUser.plexInfo.thumb}}" />
|
||||||
<div hidden="hidden" ng-bind="selectedUser.id"></div>
|
<div hidden="hidden" ng-bind="selectedUser.id"></div>
|
||||||
<div>
|
<div>
|
||||||
<strong>Username: </strong><span ng-bind="selectedUser.username"></span>
|
<strong>Username: </strong><span ng-bind="selectedUser.username"></span>
|
||||||
|
@ -21,33 +21,34 @@
|
||||||
<div>
|
<div>
|
||||||
<strong>User Type: </strong><span ng-bind="selectedUser.type === 1 ? 'Local User' : 'Plex User'"></span>
|
<strong>User Type: </strong><span ng-bind="selectedUser.type === 1 ? 'Local User' : 'Plex User'"></span>
|
||||||
</div>
|
</div>
|
||||||
<br/>
|
<br />
|
||||||
<br/>
|
<br />
|
||||||
<div ng-show="selectedUser">
|
<div ng-show="selectedUser">
|
||||||
<!--Edit-->
|
<!--Edit-->
|
||||||
|
|
||||||
<strong>Modify Permissions:</strong>
|
<strong>Modify Permissions:</strong>
|
||||||
<!--Load all permissions-->
|
<!--Load all permissions-->
|
||||||
|
|
||||||
<div class="checkbox" ng-repeat="p in selectedUser.permissions">
|
<div class="checkbox" ng-repeat="p in selectedUser.permissions">
|
||||||
<input id="permissionsCheckbox_{{$id}}" class="checkbox-custom" name="permissions[]" ng-checked="p.selected" ng-model="p.selected" type="checkbox" value="{{p.value}}"/>
|
<input id="permissionsCheckbox_{{$id}}" class="checkbox-custom" name="permissions[]" ng-checked="p.selected" ng-model="p.selected" type="checkbox" value="{{p.value}}" />
|
||||||
<label for="permissionsCheckbox_{{$id}}">{{p.name}}</label>
|
<label for="permissionsCheckbox_{{$id}}">{{p.name}}</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<strong>Modify Features:</strong>
|
<strong>Modify Features:</strong>
|
||||||
<!--Load all features-->
|
<!--Load all features-->
|
||||||
<div class="checkbox" ng-repeat="p in selectedUser.features">
|
<div class="checkbox" ng-repeat="p in selectedUser.features">
|
||||||
<input id="featuresCheckbox_{{$id}}" class="checkbox-custom" name="features[]" ng-checked="p.selected" ng-model="p.selected" type="checkbox" value="{{p.value}}"/>
|
<input id="featuresCheckbox_{{$id}}" class="checkbox-custom" name="features[]" ng-checked="p.selected" ng-model="p.selected" type="checkbox" value="{{p.value}}" />
|
||||||
<label for="featuresCheckbox_{{$id}}">{{p.name}}</label>
|
<label for="featuresCheckbox_{{$id}}">{{p.name}}</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<strong>Email Address</strong>
|
<strong>Email Address</strong>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input id="emailAddress" type="email" ng-model="selectedUser.emailAddress" ng-disabled="selectedUser.type === 0" class="form-control form-control-custom"/>
|
<input id="emailAddress" type="email" ng-model="selectedUser.emailAddress" ng-disabled="selectedUser.type === 0" class="form-control form-control-custom" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<strong>Alias</strong>
|
<strong>Alias</strong>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input id="alias" type="text" ng-model="selectedUser.alias" class="form-control form-control-custom"/>
|
<input id="alias" type="text" ng-model="selectedUser.alias" class="form-control form-control-custom" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,122 +63,136 @@
|
||||||
<div>
|
<div>
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div>
|
<div>
|
||||||
<br/>
|
<br />
|
||||||
<br/>
|
<br />
|
||||||
<br/>
|
<br />
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<div ng-show="error.error" ng-bind="error.errorMessage"></div>
|
<div ng-show="error.error" ng-bind="error.errorMessage"></div>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
<form name="userform" ng-submit="addUser()" novalidate>
|
<form name="userform" ng-submit="addUser()" novalidate>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input id="username" type="text" placeholder="user" ng-model="user.username" class="form-control form-control-custom"/>
|
<input id="username" type="text" placeholder="user" ng-model="user.username" class="form-control form-control-custom" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input id="password" type="password" placeholder="password" ng-model="user.password" class="form-control form-control-custom"/>
|
<input id="password" type="password" placeholder="password" ng-model="user.password" class="form-control form-control-custom" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input id="email" type="email" placeholder="email address" ng-model="user.email" class="form-control form-control-custom"/>
|
<input id="email" type="email" placeholder="email address" ng-model="user.email" class="form-control form-control-custom" />
|
||||||
</div>
|
</div>
|
||||||
<h3>Permissions: </h3>
|
<div class="row">
|
||||||
<div class="checkbox" ng-repeat="permission in permissions">
|
<h3>Permissions: </h3>
|
||||||
<input id="permission_{{$id}}" class="checkbox-custom" name="permission[]"
|
<div class="col-md-5">
|
||||||
ng-checked="permission.selected" ng-model="permission.selected" type="checkbox" value="{{permission.value}}"/>
|
<div class="checkbox" ng-repeat="permission in permissions">
|
||||||
<label for="permission_{{$id}}">{{permission.name}}</label>
|
<input id="permission_{{$id}}" class="checkbox-custom" name="permission[]"
|
||||||
|
ng-checked="permission.selected" ng-model="permission.selected" type="checkbox" value="{{permission.value}}" />
|
||||||
|
<label for="permission_{{$id}}">{{permission.name}}</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3>Features: </h3>
|
||||||
|
<div class="col-md-5">
|
||||||
|
<div class="checkbox" ng-repeat="f in features">
|
||||||
|
<input id="features_{{$id}}" class="checkbox-custom" name="f[]"
|
||||||
|
ng-checked="f.selected" ng-model="f.selected" type="checkbox" value="{{f.value}}" />
|
||||||
|
<label for="features_{{$id}}">{{f.name}}</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<h3>Features: </h3>
|
<div class="row">
|
||||||
<div class="checkbox" ng-repeat="f in features">
|
<input type="submit" class="btn btn-success-outline" value="Add" />
|
||||||
<input id="features_{{$id}}" class="checkbox-custom" name="f[]"
|
|
||||||
ng-checked="f.selected" ng-model="f.selected" type="checkbox" value="{{f.value}}"/>
|
<button type="button" ng-click="redirectToSettings()" class="btn btn-primary-outline" style="float: right; margin-right: 10px;">Settings</button>
|
||||||
<label for="features_{{$id}}">{{f.name}}</label>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="submit" class="btn btn-success-outline" value="Add"/>
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
||||||
<form>
|
<form>
|
||||||
<div class="form-group">
|
<div class="row">
|
||||||
<div class="input-group">
|
<div class="form-group">
|
||||||
<div class="input-group-addon">
|
<div class="input-group">
|
||||||
<i class="fa fa-search"></i>
|
<div class="input-group-addon">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="text" class="form-control" placeholder="Search" ng-model="searchTerm">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="text" class="form-control" placeholder="Search" ng-model="searchTerm">
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<table class="table table-striped table-hover table-responsive table-condensed">
|
<table class="table table-striped table-hover table-responsive table-condensed">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th>
|
||||||
<a href="#" ng-click="sortType = 'username'; sortReverse = !sortReverse">
|
<a href="#" ng-click="sortType = 'username'; sortReverse = !sortReverse">
|
||||||
Username
|
Username
|
||||||
<span ng-show="sortType == 'username' && !sortReverse" class="fa fa-caret-down"></span>
|
<span ng-show="sortType == 'username' && !sortReverse" class="fa fa-caret-down"></span>
|
||||||
<span ng-show="sortType == 'username' && sortReverse" class="fa fa-caret-up"></span>
|
<span ng-show="sortType == 'username' && sortReverse" class="fa fa-caret-up"></span>
|
||||||
</a>
|
</a>
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<a href="#" ng-click="sortType = 'alias'; sortReverse = !sortReverse">
|
<a href="#" ng-click="sortType = 'alias'; sortReverse = !sortReverse">
|
||||||
Alias
|
Alias
|
||||||
<span ng-show="sortType == 'alias' && !sortReverse" class="fa fa-caret-down"></span>
|
<span ng-show="sortType == 'alias' && !sortReverse" class="fa fa-caret-down"></span>
|
||||||
<span ng-show="sortType == 'alias' && sortReverse" class="fa fa-caret-up"></span>
|
<span ng-show="sortType == 'alias' && sortReverse" class="fa fa-caret-up"></span>
|
||||||
</a>
|
</a>
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<a href="#" ng-click="sortType = 'emailAddress'; sortReverse = !sortReverse">
|
<a href="#" ng-click="sortType = 'emailAddress'; sortReverse = !sortReverse">
|
||||||
Email
|
Email
|
||||||
<span ng-show="sortType == 'emailAddress' && !sortReverse" class="fa fa-caret-down"></span>
|
<span ng-show="sortType == 'emailAddress' && !sortReverse" class="fa fa-caret-down"></span>
|
||||||
<span ng-show="sortType == 'emailAddress' && sortReverse" class="fa fa-caret-up"></span>
|
<span ng-show="sortType == 'emailAddress' && sortReverse" class="fa fa-caret-up"></span>
|
||||||
</a>
|
</a>
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
Permissions
|
Permissions
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th ng-hide="hideColumns">
|
||||||
<a href="#" ng-click="sortType = 'type'; sortReverse = !sortReverse">
|
<a href="#" ng-click="sortType = 'type'; sortReverse = !sortReverse">
|
||||||
User Type
|
User Type
|
||||||
<span ng-show="sortType == 'type' && !sortReverse" class="fa fa-caret-down"></span>
|
<span ng-show="sortType == 'type' && !sortReverse" class="fa fa-caret-down"></span>
|
||||||
<span ng-show="sortType == 'type' && sortReverse" class="fa fa-caret-up"></span>
|
<span ng-show="sortType == 'type' && sortReverse" class="fa fa-caret-up"></span>
|
||||||
</a>
|
</a>
|
||||||
</th>
|
</th>
|
||||||
|
|
||||||
<th>
|
<th ng-hide="hideColumns">
|
||||||
<a href="#" ng-click="sortType = 'lastLoggedIn'; sortReverse = !sortReverse">
|
<a href="#" ng-click="sortType = 'lastLoggedIn'; sortReverse = !sortReverse">
|
||||||
Last Logged In
|
Last Logged In
|
||||||
<span ng-show="sortType == 'lastLoggedIn' && !sortReverse" class="fa fa-caret-down"></span>
|
<span ng-show="sortType == 'lastLoggedIn' && !sortReverse" class="fa fa-caret-down"></span>
|
||||||
<span ng-show="sortType == 'lastLoggedIn' && sortReverse" class="fa fa-caret-up"></span>
|
<span ng-show="sortType == 'lastLoggedIn' && sortReverse" class="fa fa-caret-up"></span>
|
||||||
</a>
|
</a>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr ng-repeat="u in users | orderBy:sortType:sortReverse | filter:searchTerm">
|
<tr ng-repeat="u in users | orderBy:sortType:sortReverse | filter:searchTerm">
|
||||||
<td>
|
<td>
|
||||||
{{u.username}}
|
{{u.username}}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{u.alias}}
|
{{u.alias}}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{u.emailAddress}}
|
{{u.emailAddress}}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{u.permissionsFormattedString}}
|
{{u.permissionsFormattedString}}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td ng-hide="hideColumns">
|
||||||
{{u.type === 1 ? 'Local User' : 'Plex User'}}
|
{{u.type === 1 ? 'Local User' : 'Plex User'}}
|
||||||
</td>
|
</td>
|
||||||
<td ng-bind="u.lastLoggedIn === minDate ? 'Never' : formatDate(u.lastLoggedIn)"></td>
|
<td ng-hide="hideColumns" ng-bind="u.lastLoggedIn === minDate ? 'Never' : formatDate(u.lastLoggedIn)"></td>
|
||||||
<td>
|
<td>
|
||||||
<a href="#" ng-click="selectUser(u.id)" class="btn btn-sm btn-info-outline detailsBtn">Details/Edit</a>
|
<a href="#IDontExist" ng-click="selectUser(u.id)" class="btn btn-sm btn-info-outline">Details/Edit</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue