Compare commits

..

2 Commits

Author SHA1 Message Date
15f95c0d74 Don't return when the unsubscribe fails
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
This rollbacks the behaviour introduced in 09eb97b
2020-03-02 13:09:13 +01:00
1197e6ce6c Move the tokens into the models
By the way, move he sqly package in the models as well
2020-03-02 13:07:04 +01:00
9 changed files with 15 additions and 22 deletions

View File

@ -8,7 +8,6 @@ import (
"git.quimbo.fr/odwrtw/canape/backend/events" "git.quimbo.fr/odwrtw/canape/backend/events"
"git.quimbo.fr/odwrtw/canape/backend/models" "git.quimbo.fr/odwrtw/canape/backend/models"
"git.quimbo.fr/odwrtw/canape/backend/tokens"
"git.quimbo.fr/odwrtw/canape/backend/web" "git.quimbo.fr/odwrtw/canape/backend/web"
"github.com/gorilla/mux" "github.com/gorilla/mux"
@ -165,7 +164,7 @@ func DeleteUserHandler(env *web.Env, w http.ResponseWriter, r *http.Request) err
} }
log.Infof("deleting user tokens") log.Infof("deleting user tokens")
if err := tokens.DeleteUserTokens(env.Database, user.Name); err != nil { if err := models.DeleteUserTokens(env.Database, user.Name); err != nil {
return err return err
} }

View File

@ -7,7 +7,6 @@ import (
"time" "time"
"git.quimbo.fr/odwrtw/canape/backend/models" "git.quimbo.fr/odwrtw/canape/backend/models"
"git.quimbo.fr/odwrtw/canape/backend/tokens"
jwt "github.com/dgrijalva/jwt-go" jwt "github.com/dgrijalva/jwt-go"
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
@ -57,7 +56,7 @@ func (a *Authorizer) GenHash(password string) (string, error) {
} }
// GenerateJWTToken generates a JWT token for a user // GenerateJWTToken generates a JWT token for a user
func (a *Authorizer) GenerateJWTToken(r *http.Request, u *models.User) (*tokens.Token, error) { func (a *Authorizer) GenerateJWTToken(r *http.Request, u *models.User) (*models.Token, error) {
// Create a jwt token // Create a jwt token
jwtToken := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ jwtToken := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
// Not before // Not before
@ -76,7 +75,7 @@ func (a *Authorizer) GenerateJWTToken(r *http.Request, u *models.User) (*tokens.
return nil, err return nil, err
} }
return &tokens.Token{ return &models.Token{
Token: ss, Token: ss,
Username: u.Name, Username: u.Name,
IP: getIPFromRequest(r), IP: getIPFromRequest(r),
@ -84,7 +83,7 @@ func (a *Authorizer) GenerateJWTToken(r *http.Request, u *models.User) (*tokens.
} }
// Login cheks password and creates a jwt token // Login cheks password and creates a jwt token
func (a *Authorizer) Login(r *http.Request, username, password string) (*tokens.Token, error) { func (a *Authorizer) Login(r *http.Request, username, password string) (*models.Token, error) {
u, err := models.GetUser(a.db, username) u, err := models.GetUser(a.db, username)
if err != nil { if err != nil {
return nil, err return nil, err
@ -157,7 +156,7 @@ func (a *Authorizer) CurrentUser(rw http.ResponseWriter, req *http.Request) (*mo
} }
// Check the token in database // Check the token in database
token, err := tokens.GetUserToken(a.db, u.Name, tokenStr) token, err := models.GetUserToken(a.db, u.Name, tokenStr)
if err != nil { if err != nil {
return nil, ErrInvalidToken return nil, ErrInvalidToken
} }

View File

@ -103,7 +103,7 @@ func (p *PolochonEventers) Unsubscribe(chanl *Channel) {
if err := tn.Unsubscribe(chanl); err != nil { if err := tn.Unsubscribe(chanl); err != nil {
p.log.Errorf("failed to unsubscribe eventer: %s", err.Error()) p.log.Errorf("failed to unsubscribe eventer: %s", err.Error())
return // TODO: check if we need to return here
} }
if len(tn.Subscribers()) == 0 { if len(tn.Subscribers()) == 0 {

View File

@ -1,4 +1,4 @@
package sqly package models
import ( import (
"time" "time"

View File

@ -3,7 +3,6 @@ package models
import ( import (
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
"github.com/lib/pq" "github.com/lib/pq"
"git.quimbo.fr/odwrtw/canape/backend/sqly"
) )
const ( const (
@ -24,7 +23,7 @@ const (
// Media represents an external media // Media represents an external media
type Media struct { type Media struct {
sqly.BaseModel BaseModel
Type string `db:"type"` Type string `db:"type"`
Source string `db:"source"` Source string `db:"source"`
Category string `db:"category"` Category string `db:"category"`

View File

@ -5,7 +5,6 @@ import (
"errors" "errors"
"fmt" "fmt"
"git.quimbo.fr/odwrtw/canape/backend/sqly"
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
"github.com/odwrtw/papi" "github.com/odwrtw/papi"
) )
@ -32,7 +31,7 @@ var ErrUnknownPolochon = fmt.Errorf("polochons: polochon does'nt exist")
// Polochon represents a polochon // Polochon represents a polochon
type Polochon struct { type Polochon struct {
sqly.BaseModel BaseModel
Name string `db:"name" json:"name"` Name string `db:"name" json:"name"`
URL string `db:"url" json:"url"` URL string `db:"url" json:"url"`
Token string `db:"token" json:"token"` Token string `db:"token" json:"token"`

View File

@ -1,4 +1,4 @@
package tokens package models
import ( import (
"database/sql" "database/sql"
@ -6,7 +6,6 @@ import (
"fmt" "fmt"
"time" "time"
"git.quimbo.fr/odwrtw/canape/backend/sqly"
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
) )
@ -26,7 +25,7 @@ var (
// Token represents a token // Token represents a token
type Token struct { type Token struct {
sqly.BaseModel BaseModel
Username string `db:"username" json:"username"` Username string `db:"username" json:"username"`
Token string `db:"token" json:"token"` Token string `db:"token" json:"token"`
Description string `db:"description" json:"description"` Description string `db:"description" json:"description"`

View File

@ -5,7 +5,6 @@ import (
"errors" "errors"
"fmt" "fmt"
"git.quimbo.fr/odwrtw/canape/backend/sqly"
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
"github.com/jmoiron/sqlx/types" "github.com/jmoiron/sqlx/types"
"github.com/odwrtw/papi" "github.com/odwrtw/papi"
@ -42,7 +41,7 @@ var ErrUnknownUser = fmt.Errorf("users: user does'nt exist")
// User represents an user // User represents an user
type User struct { type User struct {
sqly.BaseModel BaseModel
Name string `json:"name"` Name string `json:"name"`
Hash string `json:"-"` Hash string `json:"-"`
Admin bool `json:"admin"` Admin bool `json:"admin"`

View File

@ -10,7 +10,6 @@ import (
"git.quimbo.fr/odwrtw/canape/backend/config" "git.quimbo.fr/odwrtw/canape/backend/config"
"git.quimbo.fr/odwrtw/canape/backend/events" "git.quimbo.fr/odwrtw/canape/backend/events"
"git.quimbo.fr/odwrtw/canape/backend/models" "git.quimbo.fr/odwrtw/canape/backend/models"
"git.quimbo.fr/odwrtw/canape/backend/tokens"
"git.quimbo.fr/odwrtw/canape/backend/web" "git.quimbo.fr/odwrtw/canape/backend/web"
"github.com/gorilla/mux" "github.com/gorilla/mux"
) )
@ -164,7 +163,7 @@ func EditHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error {
func GetTokensHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error { func GetTokensHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error {
user := auth.GetCurrentUser(r, e.Log) user := auth.GetCurrentUser(r, e.Log)
tokens, err := tokens.GetUserTokens(e.Database, user.Name) tokens, err := models.GetUserTokens(e.Database, user.Name)
if err != nil { if err != nil {
return err return err
} }
@ -179,7 +178,7 @@ func DeleteTokenHandler(e *web.Env, w http.ResponseWriter, r *http.Request) erro
user := auth.GetCurrentUser(r, e.Log) user := auth.GetCurrentUser(r, e.Log)
if err := tokens.DeleteToken(e.Database, user.Name, token); err != nil { if err := models.DeleteToken(e.Database, user.Name, token); err != nil {
return err return err
} }
@ -193,7 +192,7 @@ func EditTokenHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error
user := auth.GetCurrentUser(r, e.Log) user := auth.GetCurrentUser(r, e.Log)
t, err := tokens.GetUserToken(e.Database, user.Name, token) t, err := models.GetUserToken(e.Database, user.Name, token)
if err != nil { if err != nil {
return err return err
} }