{{ template "base" . }} {{ define "title" }}Admin - Users{{ end }} {{ define "header" }}<a class="whitespace-pre" href="../admin">Admin - Users</a>{{ end }} {{ define "content" }} <div class="relative h-full overflow-x-auto"> <input type="checkbox" id="add-button" class="hidden peer/add" /> <div class="absolute top-10 left-10 p-3 transition-all duration-200 bg-gray-200 rounded shadow-lg shadow-gray-500 dark:shadow-gray-900 dark:bg-gray-600 hidden peer-checked/add:block"> <form method="POST" action="./users" class="flex flex-col gap-2 text-black dark:text-white text-sm"> <input type="text" id="operation" name="operation" value="CREATE" class="hidden" /> <input type="text" id="user" name="user" placeholder="User" class="p-2 bg-gray-300 text-black dark:bg-gray-700 dark:text-white" /> <input type="password" id="password" name="password" placeholder="Password" class="p-2 bg-gray-300 text-black dark:bg-gray-700 dark:text-white" /> <button class="font-medium px-2 py-1 text-white bg-gray-500 dark:text-gray-800 hover:bg-gray-800 dark:hover:bg-gray-100" type="submit">Create</button> </form> </div> <div class="min-w-full overflow-scroll rounded shadow"> <table class="min-w-full leading-normal bg-white dark:bg-gray-700 text-sm"> <thead class="text-gray-800 dark:text-gray-400"> <tr> <th class="p-3 font-normal text-left uppercase border-b border-gray-200 dark:border-gray-800 w-12"> <label class="cursor-pointer" for="add-button">{{ template "svg/add" }}</label> </th> <th class="p-3 font-normal text-left uppercase border-b border-gray-200 dark:border-gray-800">User</th> <th class="p-3 font-normal text-left uppercase border-b border-gray-200 dark:border-gray-800">Password</th> <th class="p-3 font-normal text-left uppercase border-b border-gray-200 dark:border-gray-800 text-center"> Permissions </th> <th class="p-3 font-normal text-left uppercase border-b border-gray-200 dark:border-gray-800 w-48">Created</th> </tr> </thead> <tbody class="text-black dark:text-white"> {{ if not .Data }} <tr> <td class="text-center p-3" colspan="2">No Results</td> </tr> {{ end }} {{ range $user := .Data }} <tr> <!-- User Deletion --> <td class="p-3 border-b border-gray-200 text-gray-800 dark:text-gray-400 cursor-pointer relative"> <label for="delete-{{ $user.ID }}-button" class="cursor-pointer">{{ template "svg/delete" }}</label> <input type="checkbox" id="delete-{{ $user.ID }}-button" class="hidden css-button" /> <div class="absolute z-30 top-1.5 left-10 p-1.5 transition-all duration-200 bg-gray-200 rounded shadow-lg shadow-gray-500 dark:shadow-gray-900 dark:bg-gray-600"> <form method="POST" action="./users" class="text-black dark:text-white text-sm w-40"> <input type="hidden" id="operation" name="operation" value="DELETE" /> <input type="hidden" id="user" name="user" value="{{ $user.ID }}" /> {{ template "component/button" (dict "Title" (printf "Delete (%s)" $user.ID )) }} </form> </div> </td> <!-- User ID --> <td class="p-3 border-b border-gray-200"> <p>{{ $user.ID }}</p> </td> <!-- User Password Change --> <td class="border-b border-gray-200 relative px-3"> <label for="edit-{{ $user.ID }}-button" class="cursor-pointer"> <span class="font-medium px-2 py-1 text-white bg-gray-500 dark:text-gray-800 hover:bg-gray-800 dark:hover:bg-gray-100" type="submit">Reset</span> </label> <input type="checkbox" id="edit-{{ $user.ID }}-button" class="hidden css-button" /> <div class="absolute z-30 top-1 left-16 ml-2 p-1.5 transition-all duration-200 bg-gray-200 rounded shadow-lg shadow-gray-500 dark:shadow-gray-900 dark:bg-gray-600"> <form method="POST" action="./users" class="flex flex gap-2 text-black dark:text-white text-sm"> <input type="hidden" id="operation" name="operation" value="UPDATE" /> <input type="hidden" id="user" name="user" value="{{ $user.ID }}" /> <input type="password" id="password" name="password" placeholder="{{ printf "Password (%s)" $user.ID }}" class="p-1.5 bg-gray-300 text-black dark:bg-gray-700 dark:text-white" /> <button class="font-medium px-2 py-1 text-white bg-gray-500 dark:text-gray-800 hover:bg-gray-800 dark:hover:bg-gray-100" type="submit">Change</button> </form> </div> </td> <!-- User Role --> <td class="flex gap-2 justify-center p-3 border-b border-gray-200 text-center min-w-40"> <!-- Set Admin & User Styles --> {{ $adminStyle := "bg-gray-400 dark:bg-gray-600 cursor-pointer" }} {{ $userStyle := "bg-gray-400 dark:bg-gray-600 cursor-pointer" }} {{ if $user.Admin }}{{ $adminStyle = "bg-gray-800 dark:bg-gray-100 cursor-default" }}{{ end }} {{ if not $user.Admin }}{{ $userStyle = "bg-gray-800 dark:bg-gray-100 cursor-default" }}{{ end }} <form method="POST" action="./users" class="flex flex gap-2 text-black dark:text-white text-sm"> <input type="hidden" id="operation" name="operation" value="UPDATE" /> <input type="hidden" id="user" name="user" value="{{ $user.ID }}" /> <input type="hidden" id="is_admin" name="is_admin" value="true" /> <button {{ if $user.Admin }}type="button"{{ else }}type="submit"{{ end }} class="px-2 py-1 rounded-md text-white dark:text-black {{ $adminStyle }}">admin </button> </form> <form method="POST" action="./users" class="flex flex gap-2 text-black dark:text-white text-sm"> <input type="hidden" id="operation" name="operation" value="UPDATE" /> <input type="hidden" id="user" name="user" value="{{ $user.ID }}" /> <input type="hidden" id="is_admin" name="is_admin" value="false" /> <button {{ if $user.Admin }}type="submit"{{ else }}type="button"{{ end }} class="px-2 py-1 rounded-md text-white dark:text-black {{ $userStyle }}">user </form> </td> <td class="p-3 border-b border-gray-200"> <p>{{ $user.CreatedAt }}</p> </td> </tr> {{ end }} </tbody> </table> </div> </div> {{ end }}