aboutsummaryrefslogtreecommitdiffstats
path: root/internal/utils/key_generator.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--internal/utils/key_generator.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/internal/utils/key_generator.go b/internal/utils/key_generator.go
new file mode 100644
index 0000000..1f88be9
--- /dev/null
+++ b/internal/utils/key_generator.go
@@ -0,0 +1,28 @@
+package utils
+
+import (
+ "encoding/base64"
+
+ crand "crypto/rand"
+
+ "donetick.com/core/logging"
+ "github.com/gin-gonic/gin"
+)
+
+func GenerateInviteCode(c *gin.Context) string {
+ logger := logging.FromContext(c)
+ // Define the length of the token (in bytes). For example, 32 bytes will result in a 44-character base64-encoded token.
+ tokenLength := 12
+
+ // Generate a random byte slice.
+ tokenBytes := make([]byte, tokenLength)
+ _, err := crand.Read(tokenBytes)
+ if err != nil {
+ logger.Errorw("utility.GenerateEmailResetToken failed to generate random bytes", "err", err)
+ }
+
+ // Encode the byte slice to a base64 string.
+ token := base64.URLEncoding.EncodeToString(tokenBytes)
+
+ return token
+}