Compare commits
31 Commits
d127be4c93
...
streifling
Author | SHA1 | Date | |
---|---|---|---|
4aa4fff5e8 | |||
a9c61c5a11 | |||
dd50c4f385 | |||
b74036343f | |||
45036fe286 | |||
8f7ac979a3 | |||
2da17014e4 | |||
4e2cae74bb | |||
4b5929911e | |||
f59321b9c6 | |||
cba3c663c9 | |||
59029c86a9 | |||
8f5739fb68 | |||
49988edd82 | |||
36f7a92a06 | |||
f716e9f0b5 | |||
f3c8cd6fa5 | |||
280e88a526 | |||
8ef6b6472d | |||
2e08600814 | |||
068bf045a7 | |||
96fe38726c | |||
75a21eeb9f | |||
6020b24e44 | |||
ebfe01069c | |||
5d41543543 | |||
2ccc9c7397 | |||
c5623fe4fd | |||
ee04a2a351 | |||
aa034701df | |||
ad9bfb2439 |
@ -140,15 +140,11 @@ func LoadArticleList(filename string) (*ArticleList, error) {
|
|||||||
return nil, fmt.Errorf("error opening key file: %v", err)
|
return nil, fmt.Errorf("error opening key file: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
articleList := initArticleList()
|
articleList := NewArticleList()
|
||||||
if err = gob.NewDecoder(file).Decode(&articleList.articles); err != nil {
|
if err = gob.NewDecoder(file).Decode(&articleList.articles); err != nil {
|
||||||
return nil, fmt.Errorf("error decoding key: %v", err)
|
return nil, fmt.Errorf("error decoding key: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
articleList.wg.Add(1)
|
|
||||||
go articleList.start()
|
|
||||||
articleList.wg.Wait()
|
|
||||||
|
|
||||||
return articleList, nil
|
return articleList, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,14 +189,10 @@ func LoadTagList(filename string) (*TagList, error) {
|
|||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
tagList := initTagList()
|
tagList := NewTagList()
|
||||||
if err = gob.NewDecoder(file).Decode(&tagList.tags); err != nil {
|
if err = gob.NewDecoder(file).Decode(&tagList.tags); err != nil {
|
||||||
return nil, fmt.Errorf("error decoding key: %v", err)
|
return nil, fmt.Errorf("error decoding key: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
tagList.wg.Add(1)
|
|
||||||
go tagList.start()
|
|
||||||
tagList.wg.Wait()
|
|
||||||
|
|
||||||
return tagList, nil
|
return tagList, nil
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package data
|
|||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
|
|
||||||
"github.com/go-sql-driver/mysql"
|
"github.com/go-sql-driver/mysql"
|
||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
@ -90,56 +89,24 @@ func (db *DB) CheckPassword(id int64, pass string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (db *DB) ChangePassword(id int64, oldPass, newPass string) error {
|
func (db *DB) ChangePassword(id int64, oldPass, newPass string) error {
|
||||||
tx, err := db.Begin()
|
if err := db.CheckPassword(id, oldPass); err != nil {
|
||||||
if err != nil {
|
return fmt.Errorf("error checking password: %v", err)
|
||||||
return fmt.Errorf("error starting transaction: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var queriedPass string
|
|
||||||
getQuery := `
|
|
||||||
SELECT password
|
|
||||||
FROM users
|
|
||||||
WHERE id = ?
|
|
||||||
`
|
|
||||||
row := tx.QueryRow(getQuery, id)
|
|
||||||
if err := row.Scan(&queriedPass); err != nil {
|
|
||||||
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
|
||||||
log.Fatalf("error: transaction error: %v, rollback error: %v", err, rollbackErr)
|
|
||||||
}
|
|
||||||
return fmt.Errorf("error reading password from DB: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := bcrypt.CompareHashAndPassword([]byte(queriedPass), []byte(oldPass)); err != nil {
|
|
||||||
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
|
||||||
log.Fatalf("error: transaction error: %v, rollback error: %v", err, rollbackErr)
|
|
||||||
}
|
|
||||||
return fmt.Errorf("incorrect password: %v", err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
newHashedPass, err := bcrypt.GenerateFromPassword([]byte(newPass), bcrypt.DefaultCost)
|
newHashedPass, err := bcrypt.GenerateFromPassword([]byte(newPass), bcrypt.DefaultCost)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
|
||||||
log.Fatalf("error: transaction error: %v, rollback error: %v", err, rollbackErr)
|
|
||||||
}
|
|
||||||
return fmt.Errorf("error creating password hash: %v", err)
|
return fmt.Errorf("error creating password hash: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
setQuery := `
|
query := `
|
||||||
UPDATE users
|
UPDATE users
|
||||||
SET password = ?
|
SET password = ?
|
||||||
WHERE id = ?
|
WHERE id = ?
|
||||||
`
|
`
|
||||||
if _, err = tx.Exec(setQuery, string(newHashedPass), id); err != nil {
|
if _, err = db.Exec(query, string(newHashedPass), id); err != nil {
|
||||||
if rollbackErr := tx.Rollback(); rollbackErr != nil {
|
|
||||||
log.Fatalf("error: transaction error: %v, rollback error: %v", err, rollbackErr)
|
|
||||||
}
|
|
||||||
return fmt.Errorf("error updating password in DB: %v", err)
|
return fmt.Errorf("error updating password in DB: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = tx.Commit(); err != nil {
|
|
||||||
return fmt.Errorf("error committing transaction: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,17 +70,17 @@ func LoadChannel(filename string) (*Channel, error) {
|
|||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
|
channel := initChannel()
|
||||||
|
channel.wg.Add(1)
|
||||||
|
go channel.start()
|
||||||
|
channel.wg.Wait()
|
||||||
|
|
||||||
tmpChannel := new(rss.Channel)
|
tmpChannel := new(rss.Channel)
|
||||||
if err = gob.NewDecoder(file).Decode(tmpChannel); err != nil {
|
if err = gob.NewDecoder(file).Decode(tmpChannel); err != nil {
|
||||||
return nil, fmt.Errorf("error decoding channel from file %v: %v", filename, err)
|
return nil, fmt.Errorf("error decoding channel from file %v: %v", filename, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
channel := initChannel()
|
|
||||||
channel.wg.Add(1)
|
|
||||||
go channel.start()
|
|
||||||
channel.wg.Wait()
|
|
||||||
channel.Set(*tmpChannel)
|
channel.Set(*tmpChannel)
|
||||||
|
|
||||||
return channel, nil
|
return channel, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user