45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
|
package authkit
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"git.solsynth.dev/hypernet/nexus/pkg/nex"
|
||
|
"git.solsynth.dev/hypernet/nexus/pkg/nex/sec"
|
||
|
"git.solsynth.dev/hypernet/passport/pkg/proto"
|
||
|
"github.com/gofiber/fiber/v2"
|
||
|
)
|
||
|
|
||
|
func AddEvent(nx *nex.Conn, userId uint, action, target, ip, ua string) error {
|
||
|
conn, err := nx.GetClientGrpcConn(nex.ServiceTypeAuth)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("failed to get auth service client: %v", err)
|
||
|
}
|
||
|
_, err = proto.NewAuditServiceClient(conn).RecordEvent(nil, &proto.RecordEventRequest{
|
||
|
UserId: uint64(userId),
|
||
|
Action: action,
|
||
|
Target: target,
|
||
|
Ip: ip,
|
||
|
UserAgent: ua,
|
||
|
})
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func AddEventExt(nx *nex.Conn, action, target string, c *fiber.Ctx) error {
|
||
|
user, ok := c.Locals("nex_user").(*sec.UserInfo)
|
||
|
if !ok {
|
||
|
return fmt.Errorf("failed to get user info, make sure you call this method behind the ContextMiddleware")
|
||
|
}
|
||
|
|
||
|
conn, err := nx.GetClientGrpcConn(nex.ServiceTypeAuth)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("failed to get auth service client: %v", err)
|
||
|
}
|
||
|
_, err = proto.NewAuditServiceClient(conn).RecordEvent(nil, &proto.RecordEventRequest{
|
||
|
UserId: uint64(user.ID),
|
||
|
Action: action,
|
||
|
Target: target,
|
||
|
Ip: c.IP(),
|
||
|
UserAgent: c.Get(fiber.HeaderUserAgent),
|
||
|
})
|
||
|
return err
|
||
|
}
|