main

mattermost/focalboard

Last updated at: 29/12/2023 09:51

audit.go

TLDR

This file contains a single method called makeAuditRecord which creates an audit record pre-populated with data from the HTTP request.

Methods

makeAuditRecord

This method takes an HTTP request, an event string, and an initial status string as input. It creates an audit.Record object and populates it with data extracted from the request such as the API path, event, status, user ID, session ID, client (user agent), IP address, and team ID. It then returns the created audit.Record object.

Parameters:

  • r *http.Request: The HTTP request object.
  • event string: The event string that describes the type of audit event.
  • initialStatus string: The initial status of the audit record.

Returns:

  • *audit.Record: The created audit record object.
package api

import (
	"net/http"

	"github.com/mattermost/focalboard/server/model"
	"github.com/mattermost/focalboard/server/services/audit"
)

// makeAuditRecord creates an audit record pre-populated with data from the request.
func (a *API) makeAuditRecord(r *http.Request, event string, initialStatus string) *audit.Record { //nolint:unparam
	ctx := r.Context()
	var sessionID string
	var userID string
	if session, ok := ctx.Value(sessionContextKey).(*model.Session); ok {
		sessionID = session.ID
		userID = session.UserID
	}

	teamID := "unknown"
	rec := &audit.Record{
		APIPath:   r.URL.Path,
		Event:     event,
		Status:    initialStatus,
		UserID:    userID,
		SessionID: sessionID,
		Client:    r.UserAgent(),
		IPAddress: r.RemoteAddr,
		Meta:      []audit.Meta{{K: audit.KeyTeamID, V: teamID}},
	}

	return rec
}