118 lines
4.6 KiB
Plaintext
118 lines
4.6 KiB
Plaintext
<%- include('partials/header', { title: 'Share detail', user }) %>
|
|
<% const isOwner = share.owner_upn === user.upn; %>
|
|
<section class="panel">
|
|
<div class="panel-head">
|
|
<div>
|
|
<h1><%= share.name %></h1>
|
|
<div class="muted">Owner: <%= share.owner_upn %></div>
|
|
<div class="muted">State: <%= share.state %></div>
|
|
</div>
|
|
<% if (isOwner) { %>
|
|
<form action="/shares/<%= share.id %>/delete" method="post">
|
|
<button class="danger" type="submit">Disable share</button>
|
|
</form>
|
|
<% } %>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="panel">
|
|
<h2>Members</h2>
|
|
<% if (error) { %>
|
|
<div class="alert"><%= error %></div>
|
|
<% } %>
|
|
<% if (isOwner) { %>
|
|
<form action="/shares/<%= share.id %>/members" method="post" class="form-grid">
|
|
<input name="principal" placeholder="user@domain" required />
|
|
<input type="hidden" name="principalType" value="user" />
|
|
<select name="role" required>
|
|
<option value="rw">RW</option>
|
|
<option value="ro">RO</option>
|
|
<option value="owner">Owner</option>
|
|
</select>
|
|
<button class="primary" type="submit">Add/Update</button>
|
|
</form>
|
|
<form action="/shares/<%= share.id %>/members" method="post" class="form-grid">
|
|
<input name="principal" placeholder="group-name" required />
|
|
<input type="hidden" name="principalType" value="group" />
|
|
<select name="role" required>
|
|
<option value="rw">RW</option>
|
|
<option value="ro">RO</option>
|
|
<option value="owner">Owner</option>
|
|
</select>
|
|
<button class="secondary" type="submit">Add Group</button>
|
|
</form>
|
|
<% } %>
|
|
|
|
<ul class="list">
|
|
<% members.forEach((member) => { %>
|
|
<li>
|
|
<div>
|
|
<div class="member"><%= member.upn || member.name %></div>
|
|
<div class="muted"><%= member.type %></div>
|
|
</div>
|
|
<div class="member-actions">
|
|
<span class="badge"><%= member.role.toUpperCase() %></span>
|
|
<% if (isOwner) { %>
|
|
<form action="/shares/<%= share.id %>/members" method="post">
|
|
<input type="hidden" name="principal" value="<%= member.upn || member.name %>" />
|
|
<input type="hidden" name="principalType" value="<%= member.type %>" />
|
|
<input type="hidden" name="action" value="remove" />
|
|
<button class="secondary" type="submit">Remove</button>
|
|
</form>
|
|
<% } %>
|
|
</div>
|
|
</li>
|
|
<% }) %>
|
|
</ul>
|
|
</section>
|
|
|
|
<section class="panel">
|
|
<h2>Local groups</h2>
|
|
<% if (isOwner) { %>
|
|
<form action="/groups" method="post" class="form-row">
|
|
<input name="name" placeholder="group-name" required />
|
|
<input type="hidden" name="shareId" value="<%= share.id %>" />
|
|
<button class="primary" type="submit">Create group</button>
|
|
</form>
|
|
<% } %>
|
|
<div class="hint">Groups are stored in SQLite and can be assigned roles per share.</div>
|
|
<div class="group-grid">
|
|
<% if (!groups.length) { %>
|
|
<div class="muted">No local groups yet.</div>
|
|
<% } %>
|
|
<% groups.forEach((group) => { %>
|
|
<div class="group-card">
|
|
<div class="group-head">
|
|
<div>
|
|
<div class="group-title"><%= group.name %></div>
|
|
<div class="muted"><%= group.member_count %> members</div>
|
|
</div>
|
|
</div>
|
|
<% if (isOwner) { %>
|
|
<form action="/groups/<%= group.id %>/members" method="post" class="form-row">
|
|
<input name="member" placeholder="user@domain" required />
|
|
<input type="hidden" name="shareId" value="<%= share.id %>" />
|
|
<button class="secondary" type="submit">Add member</button>
|
|
</form>
|
|
<% } %>
|
|
<ul class="list compact">
|
|
<% group.members.forEach((member) => { %>
|
|
<li>
|
|
<span><%= member.user_upn %></span>
|
|
<% if (isOwner) { %>
|
|
<form action="/groups/<%= group.id %>/members" method="post">
|
|
<input type="hidden" name="member" value="<%= member.user_upn %>" />
|
|
<input type="hidden" name="action" value="remove" />
|
|
<input type="hidden" name="shareId" value="<%= share.id %>" />
|
|
<button class="secondary" type="submit">Remove</button>
|
|
</form>
|
|
<% } %>
|
|
</li>
|
|
<% }) %>
|
|
</ul>
|
|
</div>
|
|
<% }) %>
|
|
</div>
|
|
</section>
|
|
<%- include('partials/footer') %>
|