New login alert

This commit is contained in:
LittleSheep 2024-10-14 22:28:30 +08:00
parent 974c5d9700
commit 8e3ce09734
2 changed files with 17 additions and 1 deletions

3
.idea/workspace.xml generated
View File

@ -5,7 +5,8 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="3fefb2c4-b6f9-466b-a523-53352e8d6f95" name="更改" comment=":sparkles: More event logs point"> <list default="true" id="3fefb2c4-b6f9-466b-a523-53352e8d6f95" name="更改" comment=":sparkles: More event logs point">
<change beforePath="$PROJECT_DIR$/pkg/internal/server/api/sign_api.go" beforeDir="false" afterPath="$PROJECT_DIR$/pkg/internal/server/api/sign_api.go" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pkg/internal/services/ticket.go" beforeDir="false" afterPath="$PROJECT_DIR$/pkg/internal/services/ticket.go" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@ -2,6 +2,7 @@ package services
import ( import (
"fmt" "fmt"
"gorm.io/datatypes"
"time" "time"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
@ -124,6 +125,20 @@ func ActiveTicket(ticket models.AuthTicket) (models.AuthTicket, error) {
if err := database.C.Save(&ticket).Error; err != nil { if err := database.C.Save(&ticket).Error; err != nil {
return ticket, err return ticket, err
} else {
_ = NewNotification(models.Notification{
Topic: "passport.security.alert",
Title: "New sign in alert",
Subtitle: lo.ToPtr(fmt.Sprintf("New sign in from %s", ticket.IpAddress)),
Body: fmt.Sprintf("Your account just got a new sign in from %s. Make sure you recongize this device, or sign out it immediately and reset password.", ticket.IpAddress),
Metadata: datatypes.JSONMap{
"ip_address": ticket.IpAddress,
"created_at": ticket.CreatedAt,
"available_at": ticket.AvailableAt,
},
AccountID: ticket.AccountID,
IsForcePush: true,
})
} }
return ticket, nil return ticket, nil