package  liman 
 
import  ( 
	"encoding/json"  
 
	"github.com/gofiber/fiber/v2"  
	"github.com/limanmys/render-engine/app/models"  
	"github.com/limanmys/render-engine/internal/database"  
	"github.com/limanmys/render-engine/pkg/logger"  
) 
 
 
func  GetCredentials  (user  *models .User , server  *models .Server ) (*models .Credentials , error ) { 
	serverKey  := &models .ServerKey {} 
 
	database .Connection ().First (&serverKey , "user_id = ? AND server_id = ?" , user .ID , server .ID ) 
 
	encryptedKey  := &models .KeyData {} 
	encrypterUser  := user .ID  
 
	if  serverKey .Data  == ""  { 
		database .Connection ().First (&server , "id = ?" , server .ID ) 
 
		if  server .SharedKey  == 1  { 
			database .Connection ().First (&serverKey , "server_id = ?" , server .ID ) 
			encrypterUser  = serverKey .UserID  
		} 
	} 
 
	err  := json .Unmarshal ( 
		[]byte (serverKey .Data ), 
		encryptedKey , 
	) 
	if  err  != nil  { 
		return  nil , err  
	} 
 
	credentials  := encryptedKey .DecryptData (&models .User {ID : encrypterUser }, server ) 
	credentials .Type  = serverKey .Type  
 
	if  len (credentials .Username ) < 1  { 
		return  nil , logger .FiberError (fiber .StatusNotFound , "server not found" ) 
	} 
 
	return  credentials , nil  
} 
  
The pages are generated with Golds   v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds  is a Go 101  project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1  (reachable from the left QR code) to get the latest news of Golds .