Files
Ludwig Lehnert 70fe6076a4 initial commit
2026-02-03 16:39:37 +01:00

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') %>