mirror of
https://github.com/lus/pasty.git
synced 2023-08-10 21:13:09 +03:00
31 lines
939 B
Go
31 lines
939 B
Go
package shared
|
|
|
|
import (
|
|
"github.com/alexedwards/argon2id"
|
|
)
|
|
|
|
// Paste represents a saved paste
|
|
type Paste struct {
|
|
ID string `json:"id" bson:"_id"`
|
|
Content string `json:"content" bson:"content"`
|
|
DeletionToken string `json:"deletionToken,omitempty" bson:"deletionToken"`
|
|
Created int64 `json:"created" bson:"created"`
|
|
AutoDelete bool `json:"autoDelete" bson:"autoDelete"`
|
|
}
|
|
|
|
// HashDeletionToken hashes the current deletion token of a paste
|
|
func (paste *Paste) HashDeletionToken() error {
|
|
hash, err := argon2id.CreateHash(paste.DeletionToken, argon2id.DefaultParams)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
paste.DeletionToken = hash
|
|
return nil
|
|
}
|
|
|
|
// CheckDeletionToken checks whether or not the given deletion token is correct
|
|
func (paste *Paste) CheckDeletionToken(deletionToken string) bool {
|
|
match, err := argon2id.ComparePasswordAndHash(deletionToken, paste.DeletionToken)
|
|
return err == nil && match
|
|
}
|