lens @ 7dd8040d6d948d41f4e3cf632e868c640f09dd5b

fix: Fix having to login every server reload
 1diff --git a/pkg/ext/auth.go b/pkg/ext/auth.go
 2index d9fbfba5d27d98ab72acbb5dec58d6906248723e..ed122bb6b2631d882efac0f6191fe3c29e0dd050 100644
 3--- a/pkg/ext/auth.go
 4+++ b/pkg/ext/auth.go
 5@@ -6,7 +6,7 @@ 	"crypto/aes"
 6 	"crypto/cipher"
 7 	"crypto/rand"
 8 	"encoding/gob"
 9-	"fmt"
10+	"errors"
11 	"io"
12 )
13 
14@@ -15,16 +15,6 @@ 	UserID   uint
15 	Username string
16 }
17 
18-var nonce []byte
19-
20-func init() {
21-	nonce = make([]byte, 12)
22-	if _, err := io.ReadFull(rand.Reader, nonce); err != nil {
23-		fmt.Println("Erro while generating nonce " + err.Error())
24-		panic(1)
25-	}
26-}
27-
28 func ReadToken(data []byte, key []byte) (*Token, error) {
29 	block, err := aes.NewCipher(key)
30 	if err != nil {
31@@ -36,7 +26,13 @@ 	if err != nil {
32 		panic(err.Error())
33 	}
34 
35-	plaintext, err := aesgcm.Open(nil, nonce, data, nil)
36+	nonceSize := aesgcm.NonceSize()
37+	if len(data) < nonceSize {
38+		return nil, errors.New("nonce size greater than data's size")
39+	}
40+
41+	nonce, ciphertext := data[:nonceSize], data[nonceSize:]
42+	plaintext, err := aesgcm.Open(nil, nonce, ciphertext, nil)
43 	if err != nil {
44 		return nil, err
45 	}
46@@ -66,7 +62,11 @@ 	enc := gob.NewEncoder(&buffer)
47 	if err := enc.Encode(token); err != nil {
48 		return nil, err
49 	}
50+	nonce := make([]byte, aesgcm.NonceSize())
51+	if _, err = io.ReadFull(rand.Reader, nonce); err != nil {
52+		return nil, err
53+	}
54 
55-	ciphertext := aesgcm.Seal(nil, nonce, buffer.Bytes(), nil)
56+	ciphertext := aesgcm.Seal(nonce, nonce, buffer.Bytes(), nil)
57 	return ciphertext, nil
58 }