mirror of
https://github.com/Forceu/Gokapi.git
synced 2026-05-25 01:09:38 -05:00
d88f649209
* Require 1.9.6 for upgrade, add function to get userID from request * Automatically add user when successfully authenticated with headers / oauth, disallow modifing own user permissions * Dont show user/pw page when using header authentication * Only display redacted versions of API keys #228, fixed deployment password * Added animation for deleting API key * Only create salt once * Disable elements on upload UI if insufficient permissions * BREAKING: User field must be email for OAUTH2, added warning in setup when changing database * BREAKING: Added option to restrict to only registered users * Fixed crash due to concurrent map iteration * Replace /uploadComplete with API call, BREAKING API is now in headers * BREAKING: require true|false instead of only checking for true * BREAKING API: Renamed apiKeyToModify parameter to targetKey
294 lines
4.9 KiB
CSS
294 lines
4.9 KiB
CSS
/*
|
|
* Globals
|
|
*/
|
|
|
|
/* Custom default button */
|
|
.btn-secondary,
|
|
.btn-secondary:hover,
|
|
.btn-secondary:focus {
|
|
color: #333;
|
|
text-shadow: none;
|
|
/* Prevent inheritance from `body` */
|
|
}
|
|
|
|
/*
|
|
* Base structure
|
|
*/
|
|
|
|
body {
|
|
background: url("../../assets/background.jpg") no-repeat center center fixed;
|
|
-webkit-background-size: cover;
|
|
-moz-background-size: cover;
|
|
-o-background-size: cover;
|
|
background-size: cover;
|
|
display: -ms-flexbox;
|
|
display: -webkit-box;
|
|
display: flex;
|
|
-ms-flex-pack: center;
|
|
-webkit-box-pack: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
td {
|
|
vertical-align: middle;
|
|
position: relative;
|
|
}
|
|
|
|
a {
|
|
color: inherit;
|
|
}
|
|
|
|
a:hover {
|
|
color: inherit;
|
|
filter: brightness(80%);
|
|
}
|
|
|
|
.dropzone {
|
|
background: rgb(47, 52, 58) !important;
|
|
color: #ffffff;
|
|
border-radius: 5px;
|
|
}
|
|
|
|
.dropzone:hover {
|
|
background: rgb(51, 57, 63) !important;
|
|
color: #ffffff;
|
|
border-radius: 5px;
|
|
}
|
|
|
|
.card {
|
|
margin: 0 auto;
|
|
float: none;
|
|
margin-bottom: 10px;
|
|
border: 2px solid rgb(51, 57, 63);
|
|
}
|
|
|
|
.card-body {
|
|
background-color: rgb(33, 37, 41);
|
|
color: #ddd;
|
|
}
|
|
|
|
.card-title {
|
|
font-weight: 900;
|
|
}
|
|
|
|
.admin-input {
|
|
text-align: center;
|
|
}
|
|
|
|
.form-control:disabled {
|
|
background: #bababa;
|
|
}
|
|
|
|
.break {
|
|
flex-basis: 100%;
|
|
height: 0;
|
|
}
|
|
|
|
.bd-placeholder-img {
|
|
font-size: 1.125rem;
|
|
text-anchor: middle;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
user-select: none;
|
|
}
|
|
|
|
@media (min-width: 768px) {
|
|
.bd-placeholder-img-lg {
|
|
font-size: 3.5rem;
|
|
}
|
|
|
|
.break {
|
|
flex-basis: 0%;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Header
|
|
*/
|
|
|
|
.masthead {
|
|
margin-bottom: 2rem;
|
|
}
|
|
|
|
.masthead-brand {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.nav-masthead .nav-link {
|
|
padding: 0.25rem 0;
|
|
font-weight: 700;
|
|
color: rgba(255, 255, 255, 0.5);
|
|
background-color: transparent;
|
|
border-bottom: 0.25rem solid transparent;
|
|
}
|
|
|
|
.nav-masthead .nav-link:hover,
|
|
.nav-masthead .nav-link:focus {
|
|
border-bottom-color: rgba(255, 255, 255, 0.25);
|
|
}
|
|
|
|
.nav-masthead .nav-link+.nav-link {
|
|
margin-left: 1rem;
|
|
}
|
|
|
|
.nav-masthead .active {
|
|
color: #fff;
|
|
border-bottom-color: #fff;
|
|
}
|
|
|
|
|
|
#qroverlay {
|
|
display: none;
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
#qrcode {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
margin-top: -105px;
|
|
margin-left: -105px;
|
|
width: 210px;
|
|
height: 210px;
|
|
border: 5px solid #ffffff;
|
|
}
|
|
|
|
.toastnotification {
|
|
pointer-events: none;
|
|
position: fixed;
|
|
bottom: 20px;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
background-color: #333;
|
|
color: #fff;
|
|
padding: 15px;
|
|
border-radius: 5px;
|
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
|
|
opacity: 0;
|
|
transition: opacity 0.3s ease-in-out;
|
|
z-index: 9999;
|
|
}
|
|
|
|
.toastnotification.show {
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
}
|
|
|
|
.perm-granted {
|
|
cursor: pointer;
|
|
color: #0edf00;
|
|
}
|
|
|
|
.perm-notgranted {
|
|
cursor: pointer;
|
|
color: #9f9999;
|
|
}
|
|
|
|
.perm-unavailable {
|
|
color: #525252;
|
|
}
|
|
|
|
.perm-processing {
|
|
pointer-events: none;
|
|
color: #e5eb00;
|
|
}
|
|
|
|
.perm-nochange {
|
|
cursor: default;
|
|
}
|
|
|
|
.prevent-select {
|
|
-webkit-user-select: none; /* Safari */
|
|
-ms-user-select: none; /* IE 10 and IE 11 */
|
|
user-select: none; /* Standard syntax */
|
|
}
|
|
|
|
|
|
.gokapi-dialog {
|
|
background-color: #212529;
|
|
color: #ddd;
|
|
}
|
|
|
|
td.newItem {
|
|
background-color: green;
|
|
}
|
|
|
|
/* Define a subtle animation */
|
|
@keyframes subtleHighlight {
|
|
0% {
|
|
background-color: #444950; /* Light gray for dark background */
|
|
}
|
|
100% {
|
|
background-color: transparent; /* Original background */
|
|
}
|
|
}
|
|
|
|
@keyframes subtleHighlightNewItem {
|
|
0% {
|
|
background-color: #a8e6a3; /* Pale green for new items */
|
|
}
|
|
100% {
|
|
background-color: green;
|
|
}
|
|
}
|
|
|
|
|
|
@keyframes subtleHighlightNewJson {
|
|
0% {
|
|
background-color: green; /* Pale green for new items */
|
|
}
|
|
100% {
|
|
background-color: transparent;
|
|
}
|
|
}
|
|
|
|
/* Apply the animation to the updated table cells */
|
|
.updatedDownloadCount {
|
|
animation: subtleHighlight 0.5s ease-out;
|
|
}
|
|
|
|
/* Apply a different animation for cells with both 'updated' and 'newItem' classes */
|
|
.updatedDownloadCount.newItem {
|
|
animation: subtleHighlightNewItem 0.5s ease-out;
|
|
}
|
|
|
|
.newApiKey {
|
|
animation: subtleHighlightNewJson 0.7s ease-out;
|
|
}
|
|
|
|
.newUser {
|
|
animation: subtleHighlightNewJson 0.7s ease-out;
|
|
}
|
|
|
|
@keyframes fadeOut {
|
|
0% {
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
|
|
.rowDeleting {
|
|
animation: fadeOut 0.3s ease-out forwards;
|
|
}
|
|
|
|
|
|
.highlighted-password {
|
|
background-color: #444; /* Dark gray background for subtle contrast */
|
|
color: #ddd; /* Light gray text */
|
|
padding: 2px 6px;
|
|
border-radius: 4px;
|
|
font-weight: bold;
|
|
font-family: monospace;
|
|
display: inline-block; /* Keeps the styling inline but ensures proper padding */
|
|
margin-left: 8px; /* Adds space between the label and the password */
|
|
border: 1px solid #555; /* Slight border to define the element */
|
|
}
|