Added ability to login
This commit is contained in:
		@@ -64,21 +64,46 @@ func (db *DB) AddUser(user, pass, first, last string, writer, editor, admin bool
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (db *DB) ChangePassword(id int64, oldPass, newPass string) error {
 | 
			
		||||
	var oldHashedPass string
 | 
			
		||||
func (db *DB) GetID(user string) (int64, error) {
 | 
			
		||||
	var id int64
 | 
			
		||||
 | 
			
		||||
	selectQuery := `
 | 
			
		||||
	query := `
 | 
			
		||||
    SELECT id FROM
 | 
			
		||||
        users
 | 
			
		||||
    WHERE
 | 
			
		||||
        username = ?
 | 
			
		||||
    `
 | 
			
		||||
	row := db.QueryRow(query, user)
 | 
			
		||||
	if err := row.Scan(&id); err != nil {
 | 
			
		||||
		return 0, fmt.Errorf("user not in DB: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return id, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (db *DB) CheckPassword(id int64, pass string) error {
 | 
			
		||||
	var queriedPass string
 | 
			
		||||
 | 
			
		||||
	query := `
 | 
			
		||||
    SELECT password FROM
 | 
			
		||||
        users
 | 
			
		||||
    WHERE
 | 
			
		||||
        id = ?
 | 
			
		||||
    `
 | 
			
		||||
	row := db.QueryRow(selectQuery, id)
 | 
			
		||||
	if err := row.Scan(&oldHashedPass); err != nil {
 | 
			
		||||
	row := db.QueryRow(query, id)
 | 
			
		||||
	if err := row.Scan(&queriedPass); err != nil {
 | 
			
		||||
		return fmt.Errorf("error reading password from DB: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := bcrypt.CompareHashAndPassword([]byte(oldHashedPass), []byte(oldPass)); err != nil {
 | 
			
		||||
	if err := bcrypt.CompareHashAndPassword([]byte(queriedPass), []byte(pass)); err != nil {
 | 
			
		||||
		return fmt.Errorf("incorrect password: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (db *DB) ChangePassword(id int64, oldPass, newPass string) error {
 | 
			
		||||
	if err := db.CheckPassword(id, oldPass); err != nil {
 | 
			
		||||
		return fmt.Errorf("error checking password: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -88,9 +113,10 @@ func (db *DB) ChangePassword(id int64, oldPass, newPass string) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	updateQuery := `
 | 
			
		||||
    UPDATE users
 | 
			
		||||
    SET password = ?
 | 
			
		||||
    WHERE id = ?
 | 
			
		||||
    UPDATE users SET
 | 
			
		||||
        password = ?
 | 
			
		||||
    WHERE
 | 
			
		||||
        id = ?
 | 
			
		||||
    `
 | 
			
		||||
	_, err = db.Exec(updateQuery, string(newHashedPass), id)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								cmd/data/markdown.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								cmd/data/markdown.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
package data
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	"github.com/microcosm-cc/bluemonday"
 | 
			
		||||
	"github.com/yuin/goldmark"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func ConvertToHTML(md string) (string, error) {
 | 
			
		||||
	var buf bytes.Buffer
 | 
			
		||||
 | 
			
		||||
	if err := goldmark.Convert([]byte(md), &buf); err != nil {
 | 
			
		||||
		return "", fmt.Errorf("error converting markdown to html: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	p := bluemonday.UGCPolicy()
 | 
			
		||||
	html := p.Sanitize(buf.String())
 | 
			
		||||
 | 
			
		||||
	return html, nil
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user