summaryrefslogtreecommitdiff
path: root/internal/api/handlers/utils.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api/handlers/utils.go')
-rw-r--r--internal/api/handlers/utils.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/internal/api/handlers/utils.go b/internal/api/handlers/utils.go
new file mode 100644
index 0000000..d6cc0d6
--- /dev/null
+++ b/internal/api/handlers/utils.go
@@ -0,0 +1,34 @@
+package handlers
+
+import (
+ "encoding/json"
+ "net/http"
+
+ "golang.org/x/crypto/bcrypt"
+)
+
+func HashPassword(password string) (string, error) {
+ bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
+ return string(bytes), err
+}
+
+func CheckPasswordHash(hash, password string) error {
+ return bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
+}
+
+// Set a JSON response with status code 400
+func JsonError(w *http.ResponseWriter, error string) {
+ payloadMap := map[string]string{"error": error}
+
+ (*w).Header().Set("Content-Type", "application/json")
+ (*w).WriteHeader(http.StatusBadRequest)
+
+ payload, err := json.Marshal(payloadMap)
+
+ if err != nil {
+ (*w).WriteHeader(http.StatusBadGateway)
+ (*w).Write([]byte(err.Error()))
+ } else {
+ (*w).Write(payload)
+ }
+}