Add random password generation for new users
- Move GenerateRandomPassword to auth package for reuse - Make password optional in user creation (generates 16-char if empty) - Return generated password in response for user to copy - Add Generate/Copy UI with show/hide toggle
This commit is contained in:
parent
7cdc561dcc
commit
8b2d2649ac
4 changed files with 80 additions and 20 deletions
|
|
@ -3,8 +3,10 @@
|
|||
package auth
|
||||
|
||||
import (
|
||||
"errors" // standard errors package
|
||||
"time" // time handling
|
||||
"crypto/rand" // cryptographically secure random number generator
|
||||
"errors" // standard errors package
|
||||
"log" // logging
|
||||
"time" // time handling
|
||||
|
||||
"github.com/golang-jwt/jwt/v5" // JWT library for token handling
|
||||
"golang.org/x/crypto/bcrypt" // bcrypt for secure password hashing
|
||||
|
|
@ -125,3 +127,16 @@ func CheckPassword(password, hash string) bool {
|
|||
err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
|
||||
return err == nil
|
||||
}
|
||||
|
||||
// GenerateRandomPassword creates a cryptographically secure random password.
|
||||
func GenerateRandomPassword(length int) string {
|
||||
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*"
|
||||
result := make([]byte, length)
|
||||
if _, err := rand.Read(result); err != nil {
|
||||
log.Fatalf("Failed to generate random password: %v", err)
|
||||
}
|
||||
for i := range result {
|
||||
result[i] = charset[int(result[i])%len(charset)]
|
||||
}
|
||||
return string(result)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue