fixes decryption check method
This commit is contained in:
@@ -52,10 +52,15 @@ func SyncStrava(app core.App) error {
|
||||
return err
|
||||
}
|
||||
|
||||
decryptedRefreshToken, err := security.Decrypt(stravaIntegration.RefreshToken, encryptionKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
request := RefreshTokenRequest{
|
||||
ClientID: stravaIntegration.ClientID,
|
||||
ClientSecret: string(decryptedSecret),
|
||||
RefreshToken: stravaIntegration.RefreshToken,
|
||||
RefreshToken: string(decryptedRefreshToken),
|
||||
GrantType: "refresh_token",
|
||||
}
|
||||
r, err := GetStravaToken(request)
|
||||
|
||||
22
db/main.go
22
db/main.go
@@ -9,6 +9,7 @@ import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/meilisearch/meilisearch-go"
|
||||
"github.com/pocketbase/dbx"
|
||||
@@ -97,9 +98,9 @@ func setupEventHandlers(app *pocketbase.PocketBase, client meilisearch.ServiceMa
|
||||
app.OnRecordAfterCreateSuccess("comments").BindFunc(createCommentHandler())
|
||||
|
||||
app.OnRecordsListRequest("integrations").BindFunc(listIntegrationHandler())
|
||||
app.OnRecordCreateRequest("integrations").BindFunc(createIntegrationHandler())
|
||||
app.OnRecordCreate("integrations").BindFunc(createIntegrationHandler())
|
||||
app.OnRecordAfterCreateSuccess("integrations").BindFunc(createUpdateIntegrationSuccessHandler())
|
||||
app.OnRecordUpdateRequest("integrations").BindFunc(updateIntegrationHandler())
|
||||
app.OnRecordUpdate("integrations").BindFunc(updateIntegrationHandler())
|
||||
app.OnRecordAfterUpdateSuccess("integrations").BindFunc(createUpdateIntegrationSuccessHandler())
|
||||
|
||||
app.OnRecordRequestEmailChangeRequest("users").BindFunc(changeUserEmailHandler())
|
||||
@@ -197,10 +198,17 @@ func updateTrailHandler(client meilisearch.ServiceManager) func(e *core.RecordEv
|
||||
func deleteTrailHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error {
|
||||
return func(e *core.RecordEvent) error {
|
||||
record := e.Record
|
||||
_, err := client.Index("trails").DeleteDocument(record.Id)
|
||||
task, err := client.Index("trails").DeleteDocument(record.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
interval := 500 * time.Millisecond
|
||||
_, err = client.WaitForTask(task.TaskUID, interval)
|
||||
if err != nil {
|
||||
log.Fatalf("Error waiting for task completion: %v", err)
|
||||
}
|
||||
|
||||
return e.Next()
|
||||
}
|
||||
}
|
||||
@@ -440,8 +448,8 @@ func listIntegrationHandler() func(e *core.RecordsListRequestEvent) error {
|
||||
}
|
||||
}
|
||||
|
||||
func createIntegrationHandler() func(e *core.RecordRequestEvent) error {
|
||||
return func(e *core.RecordRequestEvent) error {
|
||||
func createIntegrationHandler() func(e *core.RecordEvent) error {
|
||||
return func(e *core.RecordEvent) error {
|
||||
err := encryptIntegrationSecrets(e.App, e.Record)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -461,8 +469,8 @@ func createUpdateIntegrationSuccessHandler() func(e *core.RecordEvent) error {
|
||||
}
|
||||
}
|
||||
|
||||
func updateIntegrationHandler() func(e *core.RecordRequestEvent) error {
|
||||
return func(e *core.RecordRequestEvent) error {
|
||||
func updateIntegrationHandler() func(e *core.RecordEvent) error {
|
||||
return func(e *core.RecordEvent) error {
|
||||
err := encryptIntegrationSecrets(e.App, e.Record)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -43,11 +43,33 @@ func CanDecryptSecret(ciphertext string) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
decryptedSecret, err := security.Decrypt(ciphertext, encryptionKey)
|
||||
|
||||
if len(decryptedSecret) > 0 && err == nil {
|
||||
return true
|
||||
// Decode Base64 first
|
||||
cipherBytes, err := base64.StdEncoding.DecodeString(ciphertext)
|
||||
if err != nil {
|
||||
return false // Not a valid Base64 string
|
||||
}
|
||||
|
||||
return false
|
||||
// Get nonce size from encryption parameters
|
||||
block, err := aes.NewCipher([]byte(encryptionKey))
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
gcm, err := cipher.NewGCM(block)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
nonceSize := gcm.NonceSize()
|
||||
|
||||
// Ensure decoded cipherBytes is long enough to contain a nonce
|
||||
if len(cipherBytes) < nonceSize {
|
||||
return false
|
||||
}
|
||||
|
||||
// Try to decrypt (only now)
|
||||
decryptedSecret, err := security.Decrypt(ciphertext, encryptionKey)
|
||||
|
||||
// Check if decryption was successful
|
||||
return err == nil && len(decryptedSecret) > 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user