mirror of
https://github.com/muety/wakapi.git
synced 2023-08-10 21:12:56 +03:00
feat: allow unlimited date ranges
This commit is contained in:
parent
2f5973cfa3
commit
6d2697ec37
|
@ -6,7 +6,7 @@ type User struct {
|
||||||
Password string `json:"-"`
|
Password string `json:"-"`
|
||||||
CreatedAt CustomTime `gorm:"type:timestamp; default:CURRENT_TIMESTAMP"`
|
CreatedAt CustomTime `gorm:"type:timestamp; default:CURRENT_TIMESTAMP"`
|
||||||
LastLoggedInAt CustomTime `gorm:"type:timestamp; default:CURRENT_TIMESTAMP"`
|
LastLoggedInAt CustomTime `gorm:"type:timestamp; default:CURRENT_TIMESTAMP"`
|
||||||
ShareDataMaxDays uint `json:"-" gorm:"default:0"`
|
ShareDataMaxDays int `json:"-" gorm:"default:0"`
|
||||||
ShareEditors bool `json:"-" gorm:"default:false; type:bool"`
|
ShareEditors bool `json:"-" gorm:"default:false; type:bool"`
|
||||||
ShareLanguages bool `json:"-" gorm:"default:false; type:bool"`
|
ShareLanguages bool `json:"-" gorm:"default:false; type:bool"`
|
||||||
ShareProjects bool `json:"-" gorm:"default:false; type:bool"`
|
ShareProjects bool `json:"-" gorm:"default:false; type:bool"`
|
||||||
|
|
|
@ -68,7 +68,8 @@ func (h *BadgeHandler) Get(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
_, rangeFrom, rangeTo := utils.ResolveInterval(interval)
|
_, rangeFrom, rangeTo := utils.ResolveInterval(interval)
|
||||||
minStart := utils.StartOfDay(rangeTo.Add(-24 * time.Hour * time.Duration(user.ShareDataMaxDays)))
|
minStart := utils.StartOfDay(rangeTo.Add(-24 * time.Hour * time.Duration(user.ShareDataMaxDays)))
|
||||||
if rangeFrom.Before(minStart) {
|
// negative value means no limit
|
||||||
|
if rangeFrom.Before(minStart) && user.ShareDataMaxDays >= 0 {
|
||||||
w.WriteHeader(http.StatusForbidden)
|
w.WriteHeader(http.StatusForbidden)
|
||||||
w.Write([]byte("requested time range too broad"))
|
w.Write([]byte("requested time range too broad"))
|
||||||
return
|
return
|
||||||
|
|
|
@ -65,7 +65,7 @@ func (h *StatsHandler) Get(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
minStart := utils.StartOfDay(rangeTo.Add(-24 * time.Hour * time.Duration(requestedUser.ShareDataMaxDays)))
|
minStart := utils.StartOfDay(rangeTo.Add(-24 * time.Hour * time.Duration(requestedUser.ShareDataMaxDays)))
|
||||||
if (authorizedUser == nil || requestedUser.ID != authorizedUser.ID) &&
|
if (authorizedUser == nil || requestedUser.ID != authorizedUser.ID) &&
|
||||||
(requestedUser.ShareDataMaxDays == 0 || rangeFrom.Before(minStart)) {
|
rangeFrom.Before(minStart) && requestedUser.ShareDataMaxDays >= 0 {
|
||||||
w.WriteHeader(http.StatusForbidden)
|
w.WriteHeader(http.StatusForbidden)
|
||||||
w.Write([]byte("requested time range too broad"))
|
w.Write([]byte("requested time range too broad"))
|
||||||
return
|
return
|
||||||
|
|
|
@ -2,7 +2,6 @@ package routes
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/emvi/logbuch"
|
"github.com/emvi/logbuch"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
@ -218,11 +217,7 @@ func (h *SettingsHandler) actionUpdateSharing(w http.ResponseWriter, r *http.Req
|
||||||
user.ShareEditors, err = strconv.ParseBool(r.PostFormValue("share_editors"))
|
user.ShareEditors, err = strconv.ParseBool(r.PostFormValue("share_editors"))
|
||||||
user.ShareOSs, err = strconv.ParseBool(r.PostFormValue("share_oss"))
|
user.ShareOSs, err = strconv.ParseBool(r.PostFormValue("share_oss"))
|
||||||
user.ShareMachines, err = strconv.ParseBool(r.PostFormValue("share_machines"))
|
user.ShareMachines, err = strconv.ParseBool(r.PostFormValue("share_machines"))
|
||||||
if v, e := strconv.Atoi(r.PostFormValue("max_days")); e == nil && v >= 0 {
|
user.ShareDataMaxDays, err = strconv.Atoi(r.PostFormValue("max_days"))
|
||||||
user.ShareDataMaxDays = uint(v)
|
|
||||||
} else {
|
|
||||||
err = errors.New("")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return http.StatusBadRequest, "", "invalid input"
|
return http.StatusBadRequest, "", "invalid input"
|
||||||
|
|
|
@ -223,10 +223,10 @@
|
||||||
<form action="" method="post" class="mt-8">
|
<form action="" method="post" class="mt-8">
|
||||||
<input type="hidden" name="action" value="update_sharing">
|
<input type="hidden" name="action" value="update_sharing">
|
||||||
<div class="flex items-center w-full text-gray-300 text-sm justify-between my-2">
|
<div class="flex items-center w-full text-gray-300 text-sm justify-between my-2">
|
||||||
<span class="mr-2">Publicly accessible data range:<br><span class="text-xs text-gray-500">(in days; 0 = not public)</span></span>
|
<span class="mr-2">Publicly accessible data range:<br><span class="text-xs text-gray-500">(in days; 0 = not public, -1 = unlimited)</span></span>
|
||||||
<div>
|
<div>
|
||||||
<input class="shadow appearance-nonshadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded py-1 px-3"
|
<input class="shadow appearance-nonshadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded py-1 px-3"
|
||||||
style="width: 70px;" type="number" id="max_days" name="max_days" min="0" max="365" required value="{{ .User.ShareDataMaxDays }}">
|
style="width: 70px;" type="number" id="max_days" name="max_days" min="-1" required value="{{ .User.ShareDataMaxDays }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center w-full text-gray-300 text-sm justify-between my-2">
|
<div class="flex items-center w-full text-gray-300 text-sm justify-between my-2">
|
||||||
|
|
Loading…
Reference in New Issue
Block a user