Adjustments
This commit is contained in:
parent
6747d68177
commit
b38f59e475
BIN
example/example
BIN
example/example
Binary file not shown.
|
@ -15,7 +15,7 @@ func main() {
|
|||
flag.StringVar(&email, "email", "", "Email address to use for registration test")
|
||||
flag.Parse()
|
||||
|
||||
db, err:=sqlx.Open("sqlite3", ":memory")
|
||||
db, err:=sqlx.Open("sqlite3", ":memory:")
|
||||
if err!=nil {
|
||||
fmt.Println("Couldn't open sqlite3 in-memory db:" + err.Error())
|
||||
os.Exit(1)
|
||||
|
@ -27,11 +27,13 @@ func main() {
|
|||
os.Exit(1)
|
||||
}
|
||||
schema:=`CREATE TABLE test_auth (
|
||||
username text NOT NULL unique key ,
|
||||
crypt text NOT NULL,
|
||||
email text NOT NULL unique key,
|
||||
username text NOT NULL ,
|
||||
password text NOT NULL,
|
||||
email text NOT NULL unique,
|
||||
recovery text NOT NULL DEFAULT '',
|
||||
recoverytime timestamp null,
|
||||
registration_date timestamp not null,
|
||||
registration_ip text not null,
|
||||
lastseen timestamp );`
|
||||
_ ,err=db.Exec(schema)
|
||||
if err != nil {
|
||||
|
|
28
main.go
28
main.go
|
@ -42,12 +42,16 @@ func Init(dbin *sqlx.DB, tp, sitename, fromaddr string) {
|
|||
}
|
||||
|
||||
func UsernameAvailable(username string) bool {
|
||||
|
||||
var u string
|
||||
q := fmt.Sprintf("select username from %s_auth where username=$1", c.TablePrefix)
|
||||
err := c.db.Get(q, username)
|
||||
err := c.db.Get(&u, q, username)
|
||||
if err == sql.ErrNoRows {
|
||||
return true
|
||||
}
|
||||
if err != nil {
|
||||
log.Printf("UsernameAvailable returned error: " + err.Error() + " Query was " + q)
|
||||
return false
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -57,20 +61,32 @@ func Register(username, email, ip string) bool {
|
|||
if !UsernameAvailable(username) {
|
||||
return false
|
||||
}
|
||||
log.Println("getting random bytes")
|
||||
pass := randBytes(16)
|
||||
crypt, err := bcrypt.GenerateFromPassword(pass, 20)
|
||||
log.Println("Generating hash")
|
||||
crypt, err := bcrypt.GenerateFromPassword(pass, 10)
|
||||
if err != nil {
|
||||
log.Printf("Bcrypt GenerateFromPassword failed? Pass is %s and error is %s\n", pass, err.Error())
|
||||
return false
|
||||
}
|
||||
q := fmt.Sprintf("insert into %s_auth (username, email, password, registration_date, registration_ip) values ($1, $2, $3, NOW(), $4)", c.TablePrefix)
|
||||
fmt.Println("db insert")
|
||||
q := fmt.Sprintf("insert into %s_auth (username, email, password, registration_date, registration_ip) values ($1, $2, $3, CURRENT_TIMESTAMP, $4)", c.TablePrefix)
|
||||
_, err = c.db.Exec(q, username, email, crypt, ip)
|
||||
if err != nil {
|
||||
log.Println("Register: insert failed: " + err.Error())
|
||||
return false
|
||||
}
|
||||
|
||||
if sendRegistrationEmail(email, username, string(pass)) {
|
||||
return true
|
||||
}
|
||||
log.Println("Failed to send registration email, deleting user.")
|
||||
q=fmt.Sprintf("delete from %s_auth where username=$1 AND password=$2", c.TablePrefix)
|
||||
_,err = c.db.Exec(q, username, string(crypt))
|
||||
if err != nil {
|
||||
log.Println("Failed to delete new user " + username + " : " + err.Error())
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func Login(username, password string) bool {
|
||||
q:=fmt.Sprintf("select password from %s_auth where username=$1",c.TablePrefix)
|
||||
|
@ -89,7 +105,7 @@ func Login(username, password string) bool {
|
|||
}
|
||||
|
||||
func bump(username string) {
|
||||
q:=fmt.Sprintf("update %s_auth set lastseen=NOW() where username=$1", c.TablePrefix)
|
||||
q:=fmt.Sprintf("update %s_auth set lastseen=CURRENT_TIMESTAMP where username=$1", c.TablePrefix)
|
||||
_, err :=c.db.Exec(q, username)
|
||||
if err != nil {
|
||||
log.Println("Error on user bump: " + err.Error())
|
||||
|
|
Loading…
Reference in New Issue