~netlandish/links

864c75041426d187e765c8326ac0e87752550247 — Peter Sanchez 16 days ago fa8357b
Add audit log when bookmarks are imported via the import tool.
2 files changed, 48 insertions(+), 11 deletions(-)

M core/import.go
M models/audit_log.go
M core/import.go => core/import.go +44 -8
@@ 4,6 4,7 @@ import (
	"context"
	"database/sql"
	"encoding/json"
	"fmt"
	"links"
	"links/models"
	"mime/multipart"


@@ 374,7 375,7 @@ func ImportFromPinBoard(c echo.Context, src multipart.File,
		return err
	}

	var start, end int
	var listlen, start, end int
	step := 100

	adapter := &importAdapter{


@@ 387,9 388,10 @@ func ImportFromPinBoard(c echo.Context, src multipart.File,
	gctx := c.(*server.Context)
	billEnabled := links.BillingEnabled(gctx.Server.Config)

	for start < len(pinBoardList) {
		if end+step > len(pinBoardList) {
			end = len(pinBoardList)
	listlen = len(pinBoardList)
	for start < listlen {
		if end+step > listlen {
			end = listlen
		} else {
			end += step
		}


@@ 414,6 416,23 @@ func ImportFromPinBoard(c echo.Context, src multipart.File,

		start += step
	}

	if listlen > 0 {
		mdata := make(map[string]any)
		mdata["org_id"] = org.ID
		err := models.RecordAuditLog(
			c.Request().Context(),
			int(user.ID),
			c.RealIP(),
			models.LOG_BOOKMARK_IMPORTED,
			fmt.Sprintf("Imported %d Pinboard bookmarks into organization %s.", listlen, org.Slug),
			mdata,
		)
		if err != nil {
			return err
		}
	}

	return nil
}



@@ 493,7 512,7 @@ func ImportFromHTML(c echo.Context, src multipart.File,
		htmlList = append(htmlList, l)
	}

	var start, end int
	var listlen, start, end int
	step := 100

	adapter := &importAdapter{


@@ 506,9 525,10 @@ func ImportFromHTML(c echo.Context, src multipart.File,
	gctx := c.(*server.Context)
	billEnabled := links.BillingEnabled(gctx.Server.Config)

	for start < len(htmlList) {
		if end+step > len(htmlList) {
			end = len(htmlList)
	listlen = len(htmlList)
	for start < listlen {
		if end+step > listlen {
			end = listlen
		} else {
			end += step
		}


@@ 533,5 553,21 @@ func ImportFromHTML(c echo.Context, src multipart.File,

		start += step
	}

	if listlen > 0 {
		mdata := make(map[string]any)
		mdata["org_id"] = org.ID
		err := models.RecordAuditLog(
			c.Request().Context(),
			int(user.ID),
			c.RealIP(),
			models.LOG_BOOKMARK_IMPORTED,
			fmt.Sprintf("Imported %d bookmarks into organization %s.", listlen, org.Slug),
			mdata,
		)
		if err != nil {
			return err
		}
	}
	return nil
}

M models/audit_log.go => models/audit_log.go +4 -3
@@ 19,9 19,10 @@ const (
	LOG_ORG_ADDED   = "organization_added"
	LOG_ORG_UPDATED = "organization_updated"

	LOG_BOOKMARK_ADDED   = "bookmark_added"
	LOG_BOOKMARK_UPDATED = "bookmark_added"
	LOG_BOOKMARK_DELETED = "bookmark_added"
	LOG_BOOKMARK_ADDED    = "bookmark_added"
	LOG_BOOKMARK_UPDATED  = "bookmark_added"
	LOG_BOOKMARK_DELETED  = "bookmark_added"
	LOG_BOOKMARK_IMPORTED = "bookmarks_imported"

	LOG_NOTE_ADDED   = "note_added"
	LOG_NOTE_UPDATED = "note_added"

Do not follow this link