mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
210 lines
9.5 KiB
Plaintext
210 lines
9.5 KiB
Plaintext
@page
|
|
@model OrganizationModel
|
|
@inject DataService DataService
|
|
@{
|
|
ViewData["Title"] = "Manage Organization";
|
|
var currentUser = DataService.GetUserByName(User.Identity.Name);
|
|
var isAdmin = currentUser.IsAdministrator;
|
|
|
|
}
|
|
<h4>@ViewData["Title"]</h4>
|
|
|
|
@if (isAdmin)
|
|
{
|
|
<div class="row">
|
|
<div class="col-sm-8">
|
|
@* Organization Name *@
|
|
<div class="form-group mw">
|
|
<label class="mb-1">Organization Name</label>
|
|
|
|
<div class="input-group">
|
|
<input id="organizationNameInput" asp-for="OrganizationName" placeholder="Enter a name for your organization" class="form-control" />
|
|
<div class="input-group-append">
|
|
<div class="fa fa-edit input-group-text"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-8">
|
|
|
|
@* Permissions *@
|
|
<div class="form-group">
|
|
<label class="mb-1">Permission Groups</label>
|
|
<span id="permissionHelpButton" class="fas fa-question-circle pointer"></span>
|
|
<select id="permissionList" multiple class="form-control all-permissions-list mb-1">
|
|
@foreach (var permission in Model.PermissionList)
|
|
{
|
|
<option value="@permission.ID">@permission.Name</option>
|
|
}
|
|
</select>
|
|
|
|
<div class="text-right mb-3">
|
|
<button id="removePermissionButton" type="button" class="btn btn-secondary">Remove</button>
|
|
</div>
|
|
|
|
<div class="input-group">
|
|
<input id="permissionInput" placeholder="Add new permission" class="form-control" maxlength="100" />
|
|
<span class="input-group-btn">
|
|
<button id="addPermissionButton" type="button" class="btn btn-secondary">Add</button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
@* Users *@
|
|
<div class="form-group">
|
|
<label class="control-label">Users</label>
|
|
<span id="usersHelpButton" class="fas fa-question-circle pointer"></span>
|
|
<table class="table table-responsive table-striped table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th>User Name</th>
|
|
<th>Administrator</th>
|
|
<th>Permissions</th>
|
|
<th>Remove</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@for (var i = 0; i < Model.Users.Count; i++)
|
|
{
|
|
<tr user="@Model.Users[i].ID">
|
|
<td class="middle-aligned"><label class="control-label">@Model.Users[i].UserName</label></td>
|
|
@if (currentUser.Id == Model.Users[i].ID)
|
|
{
|
|
<td class="middle-aligned text-center">@Html.CheckBoxFor(x => x.Users[i].IsAdmin, new { user = Model.Users[i].ID, @class = "user-is-admin-checkbox", disabled = "disabled" })</td>
|
|
}
|
|
else
|
|
{
|
|
<td class="middle-aligned text-center">@Html.CheckBoxFor(x => x.Users[i].IsAdmin, new { user = Model.Users[i].ID, @class = "user-is-admin-checkbox" })</td>
|
|
}
|
|
<td><button type="button" data-toggle="modal" data-target=".modal[user='@Model.Users[i].ID']" class="btn btn-primary">Permissions</button></td>
|
|
<td><button type="button" class="btn btn-danger remove-user-button" user="@Model.Users[i].ID">Remove</button></td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@* Invitations *@
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<div class="form-group">
|
|
<label class="control-label">Invitations</label>
|
|
<span id="invitesHelpButton" class="fas fa-question-circle pointer"></span>
|
|
<table id="invitesTable" class="table table-responsive table-striped table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th>Invited User</th>
|
|
<th>Administrator</th>
|
|
<th>Link(s)</th>
|
|
<th>Delete</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@for (var i = 0; i < Model.Invites.Count; i++)
|
|
{
|
|
<tr invite="@Model.Invites[i].ID">
|
|
<td class="middle-aligned"><label class="control-label">@Model.Invites[i].InvitedUser</label></td>
|
|
<td class="middle-aligned text-center">@Html.CheckBoxFor(x => x.Invites[i].IsAdmin, new { disabled = "disabled" })</td>
|
|
<td class="middle-aligned">
|
|
<label class="control-label">
|
|
<a href="@Request.Scheme://@Request.Host/Invite/?id=@Model.Invites[i].ID">Join Link</a>
|
|
@if (!string.IsNullOrWhiteSpace(Model.Invites[i].ResetUrl))
|
|
{
|
|
<br />
|
|
<a href="@Model.Invites[i].ResetUrl">Reset Password</a>
|
|
}
|
|
</label>
|
|
</td>
|
|
<td><button type="button" class="btn btn-danger delete-invite-button" invite="@Model.Invites[i].ID">Delete</button></td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
@* Send Invites *@
|
|
<div class="row">
|
|
<div class="col-sm-8">
|
|
<div class="form-group">
|
|
<div class="input-group">
|
|
<input id="inviteUserInput" placeholder="Username/email to invite" type="email" required class="form-control" />
|
|
<div class="input-group-append">
|
|
<span class="input-group-text pr-1">Admin?</span>
|
|
</div>
|
|
<div class="input-group-append">
|
|
<div class="input-group-text pl-1">
|
|
<input id="inviteIsAdmin" class="checkbox-inline" type="checkbox" />
|
|
</div>
|
|
</div>
|
|
<div class="input-group-append">
|
|
<button id="sendInviteButton" type="button" class="btn btn-secondary">Invite</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@* Modals *@
|
|
@for (var i = 0; i < Model.Users.Count; i++)
|
|
{
|
|
<div user="@Model.Users[i].ID" class="modal fade">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title">Permissions <span class="small text-muted">for @Model.Users[i].UserName</span></h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<select multiple class="form-control user-permissions-list mb-1">
|
|
@foreach (var permission in Model.Users[i].Permissions)
|
|
{
|
|
<option value="@permission.ID">@permission.Name</option>
|
|
}
|
|
</select>
|
|
<div class="text-right mb-3">
|
|
<button type="button" class="btn btn-secondary remove-permission-from-user-button" user="@Model.Users[i].ID">
|
|
Remove
|
|
</button>
|
|
</div>
|
|
<div class="input-group">
|
|
<select class="form-control dropdown all-permissions-list">
|
|
@foreach (var permission in Model.PermissionList)
|
|
{
|
|
<option value="@permission.ID">@permission.Name</option>
|
|
}
|
|
</select>
|
|
<span class="input-group-btn">
|
|
<button type="button" class="btn btn-secondary add-permission-to-user-button" user="@Model.Users[i].ID">
|
|
Add
|
|
</button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
<h5 class="text-muted">Only organization administrators can view this page.</h5>
|
|
}
|
|
|
|
<script type="module" src="~/scripts/Pages/OrganizationManagement.js">
|
|
</script>
|