fixes decryption check method
This commit is contained in:
@@ -52,10 +52,15 @@ func SyncStrava(app core.App) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
decryptedRefreshToken, err := security.Decrypt(stravaIntegration.RefreshToken, encryptionKey)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
request := RefreshTokenRequest{
|
request := RefreshTokenRequest{
|
||||||
ClientID: stravaIntegration.ClientID,
|
ClientID: stravaIntegration.ClientID,
|
||||||
ClientSecret: string(decryptedSecret),
|
ClientSecret: string(decryptedSecret),
|
||||||
RefreshToken: stravaIntegration.RefreshToken,
|
RefreshToken: string(decryptedRefreshToken),
|
||||||
GrantType: "refresh_token",
|
GrantType: "refresh_token",
|
||||||
}
|
}
|
||||||
r, err := GetStravaToken(request)
|
r, err := GetStravaToken(request)
|
||||||
|
|||||||
22
db/main.go
22
db/main.go
@@ -9,6 +9,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/meilisearch/meilisearch-go"
|
"github.com/meilisearch/meilisearch-go"
|
||||||
"github.com/pocketbase/dbx"
|
"github.com/pocketbase/dbx"
|
||||||
@@ -97,9 +98,9 @@ func setupEventHandlers(app *pocketbase.PocketBase, client meilisearch.ServiceMa
|
|||||||
app.OnRecordAfterCreateSuccess("comments").BindFunc(createCommentHandler())
|
app.OnRecordAfterCreateSuccess("comments").BindFunc(createCommentHandler())
|
||||||
|
|
||||||
app.OnRecordsListRequest("integrations").BindFunc(listIntegrationHandler())
|
app.OnRecordsListRequest("integrations").BindFunc(listIntegrationHandler())
|
||||||
app.OnRecordCreateRequest("integrations").BindFunc(createIntegrationHandler())
|
app.OnRecordCreate("integrations").BindFunc(createIntegrationHandler())
|
||||||
app.OnRecordAfterCreateSuccess("integrations").BindFunc(createUpdateIntegrationSuccessHandler())
|
app.OnRecordAfterCreateSuccess("integrations").BindFunc(createUpdateIntegrationSuccessHandler())
|
||||||
app.OnRecordUpdateRequest("integrations").BindFunc(updateIntegrationHandler())
|
app.OnRecordUpdate("integrations").BindFunc(updateIntegrationHandler())
|
||||||
app.OnRecordAfterUpdateSuccess("integrations").BindFunc(createUpdateIntegrationSuccessHandler())
|
app.OnRecordAfterUpdateSuccess("integrations").BindFunc(createUpdateIntegrationSuccessHandler())
|
||||||
|
|
||||||
app.OnRecordRequestEmailChangeRequest("users").BindFunc(changeUserEmailHandler())
|
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 {
|
func deleteTrailHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error {
|
||||||
return func(e *core.RecordEvent) error {
|
return func(e *core.RecordEvent) error {
|
||||||
record := e.Record
|
record := e.Record
|
||||||
_, err := client.Index("trails").DeleteDocument(record.Id)
|
task, err := client.Index("trails").DeleteDocument(record.Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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()
|
return e.Next()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -440,8 +448,8 @@ func listIntegrationHandler() func(e *core.RecordsListRequestEvent) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func createIntegrationHandler() func(e *core.RecordRequestEvent) error {
|
func createIntegrationHandler() func(e *core.RecordEvent) error {
|
||||||
return func(e *core.RecordRequestEvent) error {
|
return func(e *core.RecordEvent) error {
|
||||||
err := encryptIntegrationSecrets(e.App, e.Record)
|
err := encryptIntegrationSecrets(e.App, e.Record)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -461,8 +469,8 @@ func createUpdateIntegrationSuccessHandler() func(e *core.RecordEvent) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateIntegrationHandler() func(e *core.RecordRequestEvent) error {
|
func updateIntegrationHandler() func(e *core.RecordEvent) error {
|
||||||
return func(e *core.RecordRequestEvent) error {
|
return func(e *core.RecordEvent) error {
|
||||||
err := encryptIntegrationSecrets(e.App, e.Record)
|
err := encryptIntegrationSecrets(e.App, e.Record)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -43,11 +43,33 @@ func CanDecryptSecret(ciphertext string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
decryptedSecret, err := security.Decrypt(ciphertext, encryptionKey)
|
// Decode Base64 first
|
||||||
|
cipherBytes, err := base64.StdEncoding.DecodeString(ciphertext)
|
||||||
if len(decryptedSecret) > 0 && err == nil {
|
if err != nil {
|
||||||
return true
|
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