1
0
mirror of https://github.com/hrfee/jfa-go.git synced 2024-12-22 17:10:10 +00:00

activity: log creations

This commit is contained in:
Harvey Tindall 2023-10-19 18:14:40 +01:00
parent 69dcaf3797
commit 2c787b4d46
Signed by: hrfee
GPG Key ID: BBC65952848FB1A2
2 changed files with 62 additions and 8 deletions

View File

@ -9,6 +9,7 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/golang-jwt/jwt" "github.com/golang-jwt/jwt"
"github.com/hrfee/mediabrowser" "github.com/hrfee/mediabrowser"
"github.com/lithammer/shortuuid/v3"
"github.com/timshannon/badgerhold/v4" "github.com/timshannon/badgerhold/v4"
) )
@ -45,6 +46,16 @@ func (app *appContext) NewUserAdmin(gc *gin.Context) {
return return
} }
id := user.ID id := user.ID
// Record activity
app.storage.SetActivityKey(shortuuid.New(), Activity{
Type: ActivityCreation,
UserID: id,
SourceType: ActivityAdmin,
Source: gc.GetString("jfId"),
Time: time.Now(),
})
profile := app.storage.GetDefaultProfile() profile := app.storage.GetDefaultProfile()
if req.Profile != "" && req.Profile != "none" { if req.Profile != "" && req.Profile != "none" {
if p, ok := app.storage.GetProfileKey(req.Profile); ok { if p, ok := app.storage.GetProfileKey(req.Profile); ok {
@ -303,6 +314,23 @@ func (app *appContext) newUser(req newUserDTO, confirmed bool) (f errorFunc, suc
} }
id := user.ID id := user.ID
// Record activity
sourceType := ActivityAnon
source := ""
if invite.ReferrerJellyfinID != "" {
sourceType = ActivityUser
source = invite.ReferrerJellyfinID
}
app.storage.SetActivityKey(shortuuid.New(), Activity{
Type: ActivityCreation,
UserID: id,
SourceType: sourceType,
Source: source,
InviteCode: invite.Code,
Time: time.Now(),
})
emailStore := EmailAddress{ emailStore := EmailAddress{
Addr: req.Email, Addr: req.Email,
Contact: (req.Email != ""), Contact: (req.Email != ""),

View File

@ -24,14 +24,15 @@ type emailStore map[string]EmailAddress
type ActivityType int type ActivityType int
const ( const (
ActivityCreation ActivityType = iota // FIXME ActivityCreation ActivityType = iota
ActivityDeletion // FIXME ActivityDeletion
ActivityDisabled // FIXME ActivityDisabled
ActivityEnabled // FIXME ActivityEnabled
ActivityLinked // FIXME ActivityLinked
ActivityChangePassword // FIXME ActivityChangePassword
ActivityResetPassword // FIXME ActivityResetPassword
ActivityCreateInvite // FIXME ActivityCreateInvite
ActivityDeleteInvite
) )
type ActivitySource int type ActivitySource int
@ -544,6 +545,31 @@ func (st *Storage) DeleteCustomContentKey(k string) {
st.db.Delete(k, CustomContent{}) st.db.Delete(k, CustomContent{})
} }
// GetActivityKey returns the value stored in the store's key.
func (st *Storage) GetActivityKey(k string) (Activity, bool) {
result := Activity{}
err := st.db.Get(k, &result)
ok := true
if err != nil {
// fmt.Printf("Failed to find custom content: %v\n", err)
ok = false
}
return result, ok
}
// SetActivityKey stores value v in key k.
func (st *Storage) SetActivityKey(k string, v Activity) {
err := st.db.Upsert(k, v)
if err != nil {
// fmt.Printf("Failed to set custom content: %v\n", err)
}
}
// DeleteActivityKey deletes value at key k.
func (st *Storage) DeleteActivityKey(k string) {
st.db.Delete(k, Activity{})
}
type TelegramUser struct { type TelegramUser struct {
JellyfinID string `badgerhold:"key"` JellyfinID string `badgerhold:"key"`
ChatID int64 `badgerhold:"index"` ChatID int64 `badgerhold:"index"`