Put user in backend
This commit is contained in:
parent
2ca1097b77
commit
9c429ba3d4
@ -5,8 +5,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/config"
|
"git.quimbo.fr/odwrtw/canape/backend/config"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/web"
|
"git.quimbo.fr/odwrtw/canape/backend/web"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
@ -21,7 +21,7 @@ func GetUsersHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error
|
|||||||
|
|
||||||
log.Debug("Getting users")
|
log.Debug("Getting users")
|
||||||
|
|
||||||
users, err := users.GetAll(env.Database)
|
users, err := backend.GetAllUsers(env.Database)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return env.RenderError(w, err)
|
return env.RenderError(w, err)
|
||||||
}
|
}
|
||||||
@ -39,7 +39,7 @@ func GenerateUserToken(env *web.Env, w http.ResponseWriter, r *http.Request) err
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
username := vars["username"]
|
username := vars["username"]
|
||||||
|
|
||||||
user, err := users.Get(env.Database, username)
|
user, err := backend.GetUser(env.Database, username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -79,7 +79,7 @@ func UpdateUserHandler(env *web.Env, w http.ResponseWriter, r *http.Request) err
|
|||||||
return env.RenderError(w, fmt.Errorf("Empty user id"))
|
return env.RenderError(w, fmt.Errorf("Empty user id"))
|
||||||
}
|
}
|
||||||
|
|
||||||
user, err := users.GetByID(env.Database, data.ID)
|
user, err := backend.GetUserByID(env.Database, data.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
|
"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"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/tokens"
|
|
||||||
|
|
||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
)
|
)
|
||||||
@ -24,20 +25,6 @@ var (
|
|||||||
ErrUnauthenticatedUser = fmt.Errorf("Unauthenticated user")
|
ErrUnauthenticatedUser = fmt.Errorf("Unauthenticated user")
|
||||||
)
|
)
|
||||||
|
|
||||||
// UserBackend interface for user backend
|
|
||||||
type UserBackend interface {
|
|
||||||
GetUser(username string) (User, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// User interface for user
|
|
||||||
type User interface {
|
|
||||||
GetName() string
|
|
||||||
GetHash() string
|
|
||||||
HasRole(string) bool
|
|
||||||
IsAdmin() bool
|
|
||||||
IsActivated() bool
|
|
||||||
}
|
|
||||||
|
|
||||||
// Authorizer handle sesssion
|
// Authorizer handle sesssion
|
||||||
type Authorizer struct {
|
type Authorizer struct {
|
||||||
db *sqlx.DB
|
db *sqlx.DB
|
||||||
@ -46,7 +33,6 @@ type Authorizer struct {
|
|||||||
|
|
||||||
// Params for Authorizer creation
|
// Params for Authorizer creation
|
||||||
type Params struct {
|
type Params struct {
|
||||||
Backend UserBackend
|
|
||||||
Pepper string
|
Pepper string
|
||||||
Cost int
|
Cost int
|
||||||
Secret string
|
Secret string
|
||||||
@ -71,7 +57,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 User) (*tokens.Token, error) {
|
func (a *Authorizer) GenerateJWTToken(r *http.Request, u *backend.User) (*tokens.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
|
||||||
@ -79,7 +65,7 @@ func (a *Authorizer) GenerateJWTToken(r *http.Request, u User) (*tokens.Token, e
|
|||||||
// Issued at
|
// Issued at
|
||||||
"iat": time.Now().Unix(),
|
"iat": time.Now().Unix(),
|
||||||
// Private claims
|
// Private claims
|
||||||
"username": u.GetName(),
|
"username": u.Name,
|
||||||
"isAdmin": u.IsAdmin(),
|
"isAdmin": u.IsAdmin(),
|
||||||
"isActivated": u.IsActivated(),
|
"isActivated": u.IsActivated(),
|
||||||
})
|
})
|
||||||
@ -92,20 +78,20 @@ func (a *Authorizer) GenerateJWTToken(r *http.Request, u User) (*tokens.Token, e
|
|||||||
|
|
||||||
return &tokens.Token{
|
return &tokens.Token{
|
||||||
Token: ss,
|
Token: ss,
|
||||||
Username: u.GetName(),
|
Username: u.Name,
|
||||||
IP: getIPFromRequest(r),
|
IP: getIPFromRequest(r),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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) (*tokens.Token, error) {
|
||||||
u, err := a.Backend.GetUser(username)
|
u, err := backend.GetUser(a.db, username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compare the password
|
// Compare the password
|
||||||
err = bcrypt.CompareHashAndPassword([]byte(u.GetHash()), []byte(password+a.Pepper))
|
err = bcrypt.CompareHashAndPassword([]byte(u.Hash), []byte(password+a.Pepper))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, ErrInvalidPassword
|
return nil, ErrInvalidPassword
|
||||||
}
|
}
|
||||||
@ -123,7 +109,7 @@ func (a *Authorizer) Login(r *http.Request, username, password string) (*tokens.
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CurrentUser returns the logged in username from session and verifies the token
|
// CurrentUser returns the logged in username from session and verifies the token
|
||||||
func (a *Authorizer) CurrentUser(rw http.ResponseWriter, req *http.Request) (User, error) {
|
func (a *Authorizer) CurrentUser(rw http.ResponseWriter, req *http.Request) (*backend.User, error) {
|
||||||
var tokenStr string
|
var tokenStr string
|
||||||
h := req.Header.Get("Authorization")
|
h := req.Header.Get("Authorization")
|
||||||
if h != "" {
|
if h != "" {
|
||||||
@ -165,13 +151,13 @@ func (a *Authorizer) CurrentUser(rw http.ResponseWriter, req *http.Request) (Use
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get the user
|
// Get the user
|
||||||
u, err := a.Backend.GetUser(tokenClaims.Username)
|
u, err := backend.GetUser(a.db, tokenClaims.Username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check the token in database
|
// Check the token in database
|
||||||
token, err := tokens.GetUserToken(a.db, u.GetName(), tokenStr)
|
token, err := tokens.GetUserToken(a.db, u.Name, tokenStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, ErrInvalidToken
|
return nil, ErrInvalidToken
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -29,7 +30,7 @@ func (m *Middleware) ServeHTTP(w http.ResponseWriter, r *http.Request, next http
|
|||||||
user, err := m.authorizer.CurrentUser(w, r)
|
user, err := m.authorizer.CurrentUser(w, r)
|
||||||
switch err {
|
switch err {
|
||||||
case nil:
|
case nil:
|
||||||
m.log.Debugf("setting user %s in the context", user.GetName())
|
m.log.Debugf("setting user %s in the context", user.Name)
|
||||||
ctxKey := authContextKey("auth.user")
|
ctxKey := authContextKey("auth.user")
|
||||||
ctx := context.WithValue(r.Context(), ctxKey, user)
|
ctx := context.WithValue(r.Context(), ctxKey, user)
|
||||||
r = r.WithContext(ctx)
|
r = r.WithContext(ctx)
|
||||||
@ -89,7 +90,7 @@ func (m *MiddlewareRole) ServeHTTP(w http.ResponseWriter, r *http.Request, next
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetCurrentUser gets the current user from the request context
|
// GetCurrentUser gets the current user from the request context
|
||||||
func GetCurrentUser(r *http.Request, log *logrus.Entry) User {
|
func GetCurrentUser(r *http.Request, log *logrus.Entry) *backend.User {
|
||||||
log.Debug("getting user from context")
|
log.Debug("getting user from context")
|
||||||
|
|
||||||
ctxKey := authContextKey("auth.user")
|
ctxKey := authContextKey("auth.user")
|
||||||
@ -97,7 +98,7 @@ func GetCurrentUser(r *http.Request, log *logrus.Entry) User {
|
|||||||
if u == nil {
|
if u == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
user, ok := u.(User)
|
user, ok := u.(*backend.User)
|
||||||
if !ok {
|
if !ok {
|
||||||
panic("invalid user type")
|
panic("invalid user type")
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
|
||||||
|
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
polochon "github.com/odwrtw/polochon/lib"
|
polochon "github.com/odwrtw/polochon/lib"
|
||||||
)
|
)
|
||||||
@ -29,9 +26,3 @@ func (b *Backend) Init([]byte) error {
|
|||||||
func (b *Backend) Status() (polochon.ModuleStatus, error) {
|
func (b *Backend) Status() (polochon.ModuleStatus, error) {
|
||||||
return polochon.StatusOK, nil
|
return polochon.StatusOK, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetUser gets the username from the UserBackend
|
|
||||||
// Implements the UserBackend interface
|
|
||||||
func (b *Backend) GetUser(username string) (auth.User, error) {
|
|
||||||
return users.Get(b.Database, username)
|
|
||||||
}
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package users
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
@ -6,12 +6,11 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"git.quimbo.fr/odwrtw/canape/backend/config"
|
||||||
|
"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"
|
||||||
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/config"
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/sqly"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -125,8 +124,8 @@ func (u *User) NewPapiClient() (*papi.Client, error) {
|
|||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get returns user with specified name
|
// GetUser returns user with specified name
|
||||||
func Get(q sqlx.Queryer, name string) (*User, error) {
|
func GetUser(q sqlx.Queryer, name string) (*User, error) {
|
||||||
u := &User{}
|
u := &User{}
|
||||||
err := q.QueryRowx(getUserQuery, name).StructScan(u)
|
err := q.QueryRowx(getUserQuery, name).StructScan(u)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -138,8 +137,8 @@ func Get(q sqlx.Queryer, name string) (*User, error) {
|
|||||||
return u, nil
|
return u, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetByID returns user using its id
|
// GetUserByID returns user using its id
|
||||||
func GetByID(q sqlx.Queryer, id string) (*User, error) {
|
func GetUserByID(q sqlx.Queryer, id string) (*User, error) {
|
||||||
u := &User{}
|
u := &User{}
|
||||||
err := q.QueryRowx(getUserByIDQuery, id).StructScan(u)
|
err := q.QueryRowx(getUserByIDQuery, id).StructScan(u)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -151,8 +150,8 @@ func GetByID(q sqlx.Queryer, id string) (*User, error) {
|
|||||||
return u, nil
|
return u, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAll returns all the users
|
// GetAllUsers returns all the users
|
||||||
func GetAll(db *sqlx.DB) ([]*User, error) {
|
func GetAllUsers(db *sqlx.DB) ([]*User, error) {
|
||||||
users := []*User{}
|
users := []*User{}
|
||||||
err := db.Select(&users, getAllUsersQuery)
|
err := db.Select(&users, getAllUsersQuery)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -203,16 +202,6 @@ func (u *User) Delete(ex *sqlx.DB) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetHash implements auth.User interface
|
|
||||||
func (u *User) GetHash() string {
|
|
||||||
return u.Hash
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetName implements auth.User interface
|
|
||||||
func (u *User) GetName() string {
|
|
||||||
return u.Name
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasRole checks if a user as a role
|
// HasRole checks if a user as a role
|
||||||
func (u *User) HasRole(role string) bool {
|
func (u *User) HasRole(role string) bool {
|
||||||
if role == AdminRole && !u.Admin {
|
if role == AdminRole && !u.Admin {
|
@ -1,12 +1,10 @@
|
|||||||
package events
|
package events
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/web"
|
"git.quimbo.fr/odwrtw/canape/backend/web"
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
)
|
)
|
||||||
@ -23,11 +21,7 @@ const (
|
|||||||
// WsHandler handles the websockets messages
|
// WsHandler handles the websockets messages
|
||||||
func WsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func WsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
// Get the user
|
// Get the user
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
upgrader := websocket.Upgrader{
|
upgrader := websocket.Upgrader{
|
||||||
ReadBufferSize: 1024,
|
ReadBufferSize: 1024,
|
||||||
|
@ -4,7 +4,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"github.com/odwrtw/papi"
|
"github.com/odwrtw/papi"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
@ -12,7 +12,7 @@ import (
|
|||||||
// TorrentNotifier is a struct implementing the Notifier interface
|
// TorrentNotifier is a struct implementing the Notifier interface
|
||||||
type TorrentNotifier struct {
|
type TorrentNotifier struct {
|
||||||
*Notifier
|
*Notifier
|
||||||
user *users.User
|
user *backend.User
|
||||||
client *papi.Client
|
client *papi.Client
|
||||||
torrents []papi.Torrent
|
torrents []papi.Torrent
|
||||||
log *logrus.Entry
|
log *logrus.Entry
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
package extmedias
|
package extmedias
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/movies"
|
"git.quimbo.fr/odwrtw/canape/backend/movies"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/shows"
|
"git.quimbo.fr/odwrtw/canape/backend/shows"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/web"
|
"git.quimbo.fr/odwrtw/canape/backend/web"
|
||||||
polochon "github.com/odwrtw/polochon/lib"
|
polochon "github.com/odwrtw/polochon/lib"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
@ -48,7 +46,7 @@ func RefreshShowsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) e
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetMovies get some movies
|
// GetMovies get some movies
|
||||||
func GetMovies(env *web.Env, user *users.User, source string, category string) ([]*movies.Movie, error) {
|
func GetMovies(env *web.Env, user *backend.User, source string, category string) ([]*movies.Movie, error) {
|
||||||
log := env.Log.WithFields(logrus.Fields{
|
log := env.Log.WithFields(logrus.Fields{
|
||||||
"source": source,
|
"source": source,
|
||||||
"category": category,
|
"category": category,
|
||||||
@ -107,7 +105,7 @@ func GetMovies(env *web.Env, user *users.User, source string, category string) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetShows get some shows
|
// GetShows get some shows
|
||||||
func GetShows(env *web.Env, user *users.User, source string, category string, force bool) ([]*shows.Show, error) {
|
func GetShows(env *web.Env, user *backend.User, source string, category string, force bool) ([]*shows.Show, error) {
|
||||||
log := env.Log.WithFields(logrus.Fields{
|
log := env.Log.WithFields(logrus.Fields{
|
||||||
"source": source,
|
"source": source,
|
||||||
"category": category,
|
"category": category,
|
||||||
@ -178,11 +176,7 @@ func ExploreMovies(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
category = "popular"
|
category = "popular"
|
||||||
}
|
}
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the medias without trying to refresh them
|
// Get the medias without trying to refresh them
|
||||||
movies, err := GetMovies(env, user, source, category)
|
movies, err := GetMovies(env, user, source, category)
|
||||||
@ -212,11 +206,7 @@ func ExploreShows(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
category = "rating"
|
category = "rating"
|
||||||
}
|
}
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the medias without trying to refresh them
|
// Get the medias without trying to refresh them
|
||||||
shows, err := GetShows(env, user, source, category, false)
|
shows, err := GetShows(env, user, source, category, false)
|
||||||
|
@ -47,7 +47,6 @@ func main() {
|
|||||||
|
|
||||||
// Generate auth params
|
// Generate auth params
|
||||||
authParams := auth.Params{
|
authParams := auth.Params{
|
||||||
Backend: backend,
|
|
||||||
Pepper: cf.Authorizer.Pepper,
|
Pepper: cf.Authorizer.Pepper,
|
||||||
Cost: cf.Authorizer.Cost,
|
Cost: cf.Authorizer.Cost,
|
||||||
Secret: cf.Authorizer.Secret,
|
Secret: cf.Authorizer.Secret,
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package movies
|
package movies
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -10,7 +9,6 @@ import (
|
|||||||
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/config"
|
"git.quimbo.fr/odwrtw/canape/backend/config"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/subtitles"
|
"git.quimbo.fr/odwrtw/canape/backend/subtitles"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/web"
|
"git.quimbo.fr/odwrtw/canape/backend/web"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/odwrtw/papi"
|
"github.com/odwrtw/papi"
|
||||||
@ -21,11 +19,7 @@ import (
|
|||||||
// PolochonMoviesHandler will returns movies from Polochon
|
// PolochonMoviesHandler will returns movies from Polochon
|
||||||
func PolochonMoviesHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func PolochonMoviesHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
// Get the user from the request
|
// Get the user from the request
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, fmt.Errorf("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the polochon movies of the user
|
// Get the polochon movies of the user
|
||||||
movies, err := getPolochonMovies(user, env)
|
movies, err := getPolochonMovies(user, env)
|
||||||
@ -69,11 +63,7 @@ func RefreshMovieHandler(env *web.Env, w http.ResponseWriter, r *http.Request) e
|
|||||||
id := vars["id"]
|
id := vars["id"]
|
||||||
|
|
||||||
// Get the user
|
// Get the user
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("invalid user type")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new papi client
|
// Create a new papi client
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
@ -114,11 +104,7 @@ func SearchMovie(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
search := vars["search"]
|
search := vars["search"]
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new papi client
|
// Create a new papi client
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
@ -200,11 +186,7 @@ func PolochonDeleteHandler(env *web.Env, w http.ResponseWriter, r *http.Request)
|
|||||||
log.Debugf("deleting movie")
|
log.Debugf("deleting movie")
|
||||||
|
|
||||||
// Get the user
|
// Get the user
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new papi client
|
// Create a new papi client
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
@ -221,11 +203,7 @@ func AddToWishlist(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
id := vars["id"]
|
id := vars["id"]
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := backend.AddMovieToWishlist(env.Database, user.ID, id); err != nil {
|
if err := backend.AddMovieToWishlist(env.Database, user.ID, id); err != nil {
|
||||||
return env.RenderError(w, err)
|
return env.RenderError(w, err)
|
||||||
@ -239,11 +217,7 @@ func DeleteFromWishlist(env *web.Env, w http.ResponseWriter, r *http.Request) er
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
id := vars["id"]
|
id := vars["id"]
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := backend.DeleteMovieFromWishlist(env.Database, user.ID, id); err != nil {
|
if err := backend.DeleteMovieFromWishlist(env.Database, user.ID, id); err != nil {
|
||||||
return env.RenderError(w, err)
|
return env.RenderError(w, err)
|
||||||
@ -254,11 +228,7 @@ func DeleteFromWishlist(env *web.Env, w http.ResponseWriter, r *http.Request) er
|
|||||||
|
|
||||||
// GetWishlistHandler returns the wishlisted movies of a user
|
// GetWishlistHandler returns the wishlisted movies of a user
|
||||||
func GetWishlistHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func GetWishlistHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new papi client
|
// Create a new papi client
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
@ -320,11 +290,7 @@ func RefreshMovieSubtitlesHandler(env *web.Env, w http.ResponseWriter, r *http.R
|
|||||||
id := vars["id"]
|
id := vars["id"]
|
||||||
|
|
||||||
// Get the user
|
// Get the user
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("invalid user type")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new papi client
|
// Create a new papi client
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
@ -358,11 +324,7 @@ func DownloadVVTSubtitle(env *web.Env, w http.ResponseWriter, r *http.Request) e
|
|||||||
lang := vars["lang"]
|
lang := vars["lang"]
|
||||||
|
|
||||||
// Get the user
|
// Get the user
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("invalid user type")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new papi client
|
// Create a new papi client
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
|
@ -10,7 +10,6 @@ import (
|
|||||||
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/subtitles"
|
"git.quimbo.fr/odwrtw/canape/backend/subtitles"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/web"
|
"git.quimbo.fr/odwrtw/canape/backend/web"
|
||||||
"github.com/odwrtw/papi"
|
"github.com/odwrtw/papi"
|
||||||
polochon "github.com/odwrtw/polochon/lib"
|
polochon "github.com/odwrtw/polochon/lib"
|
||||||
@ -251,7 +250,7 @@ func (m *Movie) PosterURL() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// getPolochonMovies returns an array of the user's polochon movies
|
// getPolochonMovies returns an array of the user's polochon movies
|
||||||
func getPolochonMovies(user *users.User, env *web.Env) ([]*Movie, error) {
|
func getPolochonMovies(user *backend.User, env *web.Env) ([]*Movie, error) {
|
||||||
movies := []*Movie{}
|
movies := []*Movie{}
|
||||||
|
|
||||||
// Create a papi client
|
// Create a papi client
|
||||||
|
@ -6,7 +6,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/web"
|
"git.quimbo.fr/odwrtw/canape/backend/web"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
@ -49,11 +49,7 @@ func GetPolochonsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) e
|
|||||||
"function": "polochons.GetPolochonsHandler",
|
"function": "polochons.GetPolochonsHandler",
|
||||||
})
|
})
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, fmt.Errorf("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Debug("Getting polochons")
|
log.Debug("Getting polochons")
|
||||||
|
|
||||||
@ -63,7 +59,7 @@ func GetPolochonsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) e
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, p := range polochons {
|
for _, p := range polochons {
|
||||||
users, err := users.GetPolochonUsers(env.Database, p.ID)
|
users, err := backend.GetPolochonUsers(env.Database, p.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return env.RenderError(w, err)
|
return env.RenderError(w, err)
|
||||||
}
|
}
|
||||||
@ -79,11 +75,7 @@ func NewPolochonHandler(env *web.Env, w http.ResponseWriter, r *http.Request) er
|
|||||||
"function": "polochons.NewPolochonHandler",
|
"function": "polochons.NewPolochonHandler",
|
||||||
})
|
})
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, fmt.Errorf("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
var data struct {
|
var data struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
@ -127,11 +119,7 @@ func EditPolochonHandler(env *web.Env, w http.ResponseWriter, r *http.Request) e
|
|||||||
})
|
})
|
||||||
log.Debugf("editing polochon ...")
|
log.Debugf("editing polochon ...")
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, fmt.Errorf("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the polochon
|
// Get the polochon
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
@ -199,11 +187,7 @@ func PolochonActivateUser(env *web.Env, w http.ResponseWriter, r *http.Request,
|
|||||||
})
|
})
|
||||||
log.Debugf("editing polochon users ...")
|
log.Debugf("editing polochon users ...")
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, fmt.Errorf("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the polochon
|
// Get the polochon
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
@ -220,7 +204,7 @@ func PolochonActivateUser(env *web.Env, w http.ResponseWriter, r *http.Request,
|
|||||||
|
|
||||||
// Get the user
|
// Get the user
|
||||||
userID := vars["user_id"]
|
userID := vars["user_id"]
|
||||||
u, err := users.GetByID(env.Database, userID)
|
u, err := backend.GetUserByID(env.Database, userID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return env.RenderError(w, err)
|
return env.RenderError(w, err)
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
admin "git.quimbo.fr/odwrtw/canape/backend/admins"
|
admin "git.quimbo.fr/odwrtw/canape/backend/admins"
|
||||||
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/events"
|
"git.quimbo.fr/odwrtw/canape/backend/events"
|
||||||
extmedias "git.quimbo.fr/odwrtw/canape/backend/external_medias"
|
extmedias "git.quimbo.fr/odwrtw/canape/backend/external_medias"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/movies"
|
"git.quimbo.fr/odwrtw/canape/backend/movies"
|
||||||
@ -17,72 +18,72 @@ func setupRoutes(env *web.Env) {
|
|||||||
// User's route
|
// User's route
|
||||||
env.Handle("/users/login", users.LoginPOSTHandler).Methods("POST")
|
env.Handle("/users/login", users.LoginPOSTHandler).Methods("POST")
|
||||||
env.Handle("/users/signup", users.SignupPOSTHandler).Methods("POST")
|
env.Handle("/users/signup", users.SignupPOSTHandler).Methods("POST")
|
||||||
env.Handle("/users/details", users.DetailsHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/users/details", users.DetailsHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/users/edit", users.EditHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/users/edit", users.EditHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/users/tokens", users.GetTokensHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/users/tokens", users.GetTokensHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/users/tokens/{token}", users.EditTokenHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/users/tokens/{token}", users.EditTokenHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/users/tokens/{token}", users.DeleteTokenHandler).WithRole(users.UserRole).Methods("DELETE")
|
env.Handle("/users/tokens/{token}", users.DeleteTokenHandler).WithRole(backend.UserRole).Methods("DELETE")
|
||||||
env.Handle("/users/modules/status", users.GetModulesStatus).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/users/modules/status", users.GetModulesStatus).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/users/polochons", polochons.GetPolochonsHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/users/polochons", polochons.GetPolochonsHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
|
|
||||||
// Polochon's route
|
// Polochon's route
|
||||||
env.Handle("/polochons", polochons.GetPublicPolochonsHandler).Methods("GET")
|
env.Handle("/polochons", polochons.GetPublicPolochonsHandler).Methods("GET")
|
||||||
env.Handle("/polochons", polochons.NewPolochonHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/polochons", polochons.NewPolochonHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/polochons/{id}", polochons.EditPolochonHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/polochons/{id}", polochons.EditPolochonHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/polochons/{id}/users/{user_id}", polochons.PolochonActivateUserHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/polochons/{id}/users/{user_id}", polochons.PolochonActivateUserHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/polochons/{id}/users/{user_id}", polochons.PolochonDeactivateUserHandler).WithRole(users.UserRole).Methods("DELETE")
|
env.Handle("/polochons/{id}/users/{user_id}", polochons.PolochonDeactivateUserHandler).WithRole(backend.UserRole).Methods("DELETE")
|
||||||
|
|
||||||
// Movies routes
|
// Movies routes
|
||||||
env.Handle("/movies/polochon", movies.PolochonMoviesHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/movies/polochon", movies.PolochonMoviesHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/movies/explore", extmedias.ExploreMovies).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/movies/explore", extmedias.ExploreMovies).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/movies/explore/options", extmedias.MovieExplorerOptions).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/movies/explore/options", extmedias.MovieExplorerOptions).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/movies/search/{search}", movies.SearchMovie).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/movies/search/{search}", movies.SearchMovie).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/movies/{id:tt[0-9]+}", movies.PolochonDeleteHandler).WithRole(users.UserRole).Methods("DELETE")
|
env.Handle("/movies/{id:tt[0-9]+}", movies.PolochonDeleteHandler).WithRole(backend.UserRole).Methods("DELETE")
|
||||||
env.Handle("/movies/{id:tt[0-9]+}/refresh", movies.RefreshMovieHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/movies/{id:tt[0-9]+}/refresh", movies.RefreshMovieHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/movies/{id:tt[0-9]+}/subtitles/{lang}", movies.DownloadVVTSubtitle).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/movies/{id:tt[0-9]+}/subtitles/{lang}", movies.DownloadVVTSubtitle).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/movies/{id:tt[0-9]+}/subtitles/refresh", movies.RefreshMovieSubtitlesHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/movies/{id:tt[0-9]+}/subtitles/refresh", movies.RefreshMovieSubtitlesHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/movies/refresh", extmedias.RefreshMoviesHandler).WithRole(users.AdminRole).Methods("POST")
|
env.Handle("/movies/refresh", extmedias.RefreshMoviesHandler).WithRole(backend.AdminRole).Methods("POST")
|
||||||
|
|
||||||
// Shows routes
|
// Shows routes
|
||||||
env.Handle("/shows/polochon", shows.PolochonShowsHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/shows/polochon", shows.PolochonShowsHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/shows/explore", extmedias.ExploreShows).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/shows/explore", extmedias.ExploreShows).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/shows/explore/options", extmedias.ShowExplorerOptions).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/shows/explore/options", extmedias.ShowExplorerOptions).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/shows/search/{search}", shows.SearchShow).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/shows/search/{search}", shows.SearchShow).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/shows/{id:tt[0-9]+}", shows.GetDetailsHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/shows/{id:tt[0-9]+}", shows.GetDetailsHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/shows/{id:tt[0-9]+}/refresh", shows.RefreshShowHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/shows/{id:tt[0-9]+}/refresh", shows.RefreshShowHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}", shows.RefreshEpisodeHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}", shows.RefreshEpisodeHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}/subtitles/refresh", shows.RefreshEpisodeSubtitlesHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}/subtitles/refresh", shows.RefreshEpisodeSubtitlesHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}/subtitles/{lang}", shows.DownloadVVTSubtitle).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}/subtitles/{lang}", shows.DownloadVVTSubtitle).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/shows/refresh", extmedias.RefreshShowsHandler).WithRole(users.AdminRole).Methods("POST")
|
env.Handle("/shows/refresh", extmedias.RefreshShowsHandler).WithRole(backend.AdminRole).Methods("POST")
|
||||||
|
|
||||||
env.Handle("/ratings/refresh", ratings.RefreshHandler).WithRole(users.AdminRole).Methods("POST")
|
env.Handle("/ratings/refresh", ratings.RefreshHandler).WithRole(backend.AdminRole).Methods("POST")
|
||||||
|
|
||||||
// Wishlist routes for shows
|
// Wishlist routes for shows
|
||||||
env.Handle("/wishlist/shows", shows.GetWishlistHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/wishlist/shows", shows.GetWishlistHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/wishlist/shows/{id:tt[0-9]+}", shows.AddToWishlist).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/wishlist/shows/{id:tt[0-9]+}", shows.AddToWishlist).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/wishlist/shows/{id:tt[0-9]+}", shows.DeleteFromWishlist).WithRole(users.UserRole).Methods("DELETE")
|
env.Handle("/wishlist/shows/{id:tt[0-9]+}", shows.DeleteFromWishlist).WithRole(backend.UserRole).Methods("DELETE")
|
||||||
|
|
||||||
// Wishlist routes for movies
|
// Wishlist routes for movies
|
||||||
env.Handle("/wishlist/movies", movies.GetWishlistHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/wishlist/movies", movies.GetWishlistHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/wishlist/movies/{id:tt[0-9]+}", movies.AddToWishlist).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/wishlist/movies/{id:tt[0-9]+}", movies.AddToWishlist).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/wishlist/movies/{id:tt[0-9]+}", movies.DeleteFromWishlist).WithRole(users.UserRole).Methods("DELETE")
|
env.Handle("/wishlist/movies/{id:tt[0-9]+}", movies.DeleteFromWishlist).WithRole(backend.UserRole).Methods("DELETE")
|
||||||
|
|
||||||
// Torrents routes
|
// Torrents routes
|
||||||
env.Handle("/torrents", torrents.DownloadHandler).WithRole(users.UserRole).Methods("POST")
|
env.Handle("/torrents", torrents.DownloadHandler).WithRole(backend.UserRole).Methods("POST")
|
||||||
env.Handle("/torrents", torrents.ListHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/torrents", torrents.ListHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
env.Handle("/torrents/{id}", torrents.RemoveHandler).WithRole(users.UserRole).Methods("DELETE")
|
env.Handle("/torrents/{id}", torrents.RemoveHandler).WithRole(backend.UserRole).Methods("DELETE")
|
||||||
env.Handle("/torrents/search/{type}/{search}", torrents.SearchHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/torrents/search/{type}/{search}", torrents.SearchHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
|
|
||||||
// Route to refresh all movies and shows
|
// Route to refresh all movies and shows
|
||||||
env.Handle("/refresh", extmedias.RefreshHandler).WithRole(users.AdminRole).Methods("POST")
|
env.Handle("/refresh", extmedias.RefreshHandler).WithRole(backend.AdminRole).Methods("POST")
|
||||||
|
|
||||||
// Route to handle websocket events
|
// Route to handle websocket events
|
||||||
env.Handle("/events", events.WsHandler).WithRole(users.UserRole).Methods("GET")
|
env.Handle("/events", events.WsHandler).WithRole(backend.UserRole).Methods("GET")
|
||||||
|
|
||||||
// Admin routes
|
// Admin routes
|
||||||
env.Handle("/admins/users", admin.GetUsersHandler).WithRole(users.AdminRole).Methods("GET")
|
env.Handle("/admins/users", admin.GetUsersHandler).WithRole(backend.AdminRole).Methods("GET")
|
||||||
env.Handle("/admins/users", admin.UpdateUserHandler).WithRole(users.AdminRole).Methods("POST")
|
env.Handle("/admins/users", admin.UpdateUserHandler).WithRole(backend.AdminRole).Methods("POST")
|
||||||
env.Handle("/admins/stats", admin.GetStatsHandler).WithRole(users.AdminRole).Methods("GET")
|
env.Handle("/admins/stats", admin.GetStatsHandler).WithRole(backend.AdminRole).Methods("GET")
|
||||||
env.Handle("/admins/tokens/{username}", admin.GenerateUserToken).WithRole(users.AdminRole).Methods("POST")
|
env.Handle("/admins/tokens/{username}", admin.GenerateUserToken).WithRole(backend.AdminRole).Methods("POST")
|
||||||
env.Handle("/admins/modules", admin.GetModulesStatuses).WithRole(users.AdminRole).Methods("GET")
|
env.Handle("/admins/modules", admin.GetModulesStatuses).WithRole(backend.AdminRole).Methods("GET")
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,6 @@ import (
|
|||||||
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/subtitles"
|
"git.quimbo.fr/odwrtw/canape/backend/subtitles"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/web"
|
"git.quimbo.fr/odwrtw/canape/backend/web"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/odwrtw/papi"
|
"github.com/odwrtw/papi"
|
||||||
@ -27,11 +26,7 @@ func GetDetailsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) err
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
id := vars["id"]
|
id := vars["id"]
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -77,11 +72,7 @@ func RefreshShowHandler(env *web.Env, w http.ResponseWriter, r *http.Request) er
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
id := vars["id"]
|
id := vars["id"]
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -126,11 +117,7 @@ func SearchShow(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
search := vars["search"]
|
search := vars["search"]
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
var shows []*polochon.Show
|
var shows []*polochon.Show
|
||||||
searchers := env.Config.Show.Searchers
|
searchers := env.Config.Show.Searchers
|
||||||
@ -200,11 +187,7 @@ func AddToWishlist(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := backend.AddShowToWishlist(env.Database, user.ID, id, data.Season, data.Episode); err != nil {
|
if err := backend.AddShowToWishlist(env.Database, user.ID, id, data.Season, data.Episode); err != nil {
|
||||||
env.Log.Warnf("Error while adding to db : %s", err)
|
env.Log.Warnf("Error while adding to db : %s", err)
|
||||||
@ -219,11 +202,7 @@ func DeleteFromWishlist(env *web.Env, w http.ResponseWriter, r *http.Request) er
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
id := vars["id"]
|
id := vars["id"]
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := backend.DeleteShowFromWishlist(env.Database, user.ID, id); err != nil {
|
if err := backend.DeleteShowFromWishlist(env.Database, user.ID, id); err != nil {
|
||||||
env.Log.Warnf("Error while deleting to db : %s", err)
|
env.Log.Warnf("Error while deleting to db : %s", err)
|
||||||
@ -235,11 +214,7 @@ func DeleteFromWishlist(env *web.Env, w http.ResponseWriter, r *http.Request) er
|
|||||||
|
|
||||||
// GetWishlistHandler returns the tracked shows of a user
|
// GetWishlistHandler returns the tracked shows of a user
|
||||||
func GetWishlistHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func GetWishlistHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -279,11 +254,7 @@ func GetWishlistHandler(env *web.Env, w http.ResponseWriter, r *http.Request) er
|
|||||||
|
|
||||||
// PolochonShowsHandler will returns shows from Polochon
|
// PolochonShowsHandler will returns shows from Polochon
|
||||||
func PolochonShowsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func PolochonShowsHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the polochon's shows
|
// Get the polochon's shows
|
||||||
shows, err := getPolochonShows(env, user)
|
shows, err := getPolochonShows(env, user)
|
||||||
@ -317,11 +288,7 @@ func RefreshEpisodeHandler(env *web.Env, w http.ResponseWriter, r *http.Request)
|
|||||||
season, _ := strconv.Atoi(vars["season"])
|
season, _ := strconv.Atoi(vars["season"])
|
||||||
episode, _ := strconv.Atoi(vars["episode"])
|
episode, _ := strconv.Atoi(vars["episode"])
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -367,11 +334,7 @@ func RefreshEpisodeSubtitlesHandler(env *web.Env, w http.ResponseWriter, r *http
|
|||||||
episode, _ := strconv.Atoi(vars["episode"])
|
episode, _ := strconv.Atoi(vars["episode"])
|
||||||
|
|
||||||
// Get the user
|
// Get the user
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("invalid user type")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new papi client
|
// Create a new papi client
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
@ -412,11 +375,7 @@ func DownloadVVTSubtitle(env *web.Env, w http.ResponseWriter, r *http.Request) e
|
|||||||
episode, _ := strconv.Atoi(vars["episode"])
|
episode, _ := strconv.Atoi(vars["episode"])
|
||||||
|
|
||||||
// Get the user
|
// Get the user
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("invalid user type")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a new papi client
|
// Create a new papi client
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
|
@ -8,7 +8,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/web"
|
"git.quimbo.fr/odwrtw/canape/backend/web"
|
||||||
"github.com/odwrtw/papi"
|
"github.com/odwrtw/papi"
|
||||||
polochon "github.com/odwrtw/polochon/lib"
|
polochon "github.com/odwrtw/polochon/lib"
|
||||||
@ -198,7 +197,7 @@ func (s *Show) imgFile(imgType string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// getPolochonShows returns all the Shows from the polochon of a user
|
// getPolochonShows returns all the Shows from the polochon of a user
|
||||||
func getPolochonShows(env *web.Env, user *users.User) ([]*Show, error) {
|
func getPolochonShows(env *web.Env, user *backend.User) ([]*Show, error) {
|
||||||
shows := []*Show{}
|
shows := []*Show{}
|
||||||
|
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
|
@ -7,7 +7,6 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/users"
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/web"
|
"git.quimbo.fr/odwrtw/canape/backend/web"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
polochon "github.com/odwrtw/polochon/lib"
|
polochon "github.com/odwrtw/polochon/lib"
|
||||||
@ -28,11 +27,7 @@ func DownloadHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error
|
|||||||
return env.RenderError(w, errors.New("no given url"))
|
return env.RenderError(w, errors.New("no given url"))
|
||||||
}
|
}
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -49,11 +44,7 @@ func DownloadHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error
|
|||||||
|
|
||||||
// ListHandler lists torrents of a polochon
|
// ListHandler lists torrents of a polochon
|
||||||
func ListHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func ListHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -70,11 +61,7 @@ func ListHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
|
|
||||||
// RemoveHandler removes a torrents via polochon
|
// RemoveHandler removes a torrents via polochon
|
||||||
func RemoveHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func RemoveHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
v := auth.GetCurrentUser(r, env.Log)
|
user := auth.GetCurrentUser(r, env.Log)
|
||||||
user, ok := v.(*users.User)
|
|
||||||
if !ok {
|
|
||||||
return env.RenderError(w, errors.New("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the torrent ID from the URL
|
// Get the torrent ID from the URL
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
"git.quimbo.fr/odwrtw/canape/backend/auth"
|
||||||
|
"git.quimbo.fr/odwrtw/canape/backend/backend"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/config"
|
"git.quimbo.fr/odwrtw/canape/backend/config"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/tokens"
|
"git.quimbo.fr/odwrtw/canape/backend/tokens"
|
||||||
"git.quimbo.fr/odwrtw/canape/backend/web"
|
"git.quimbo.fr/odwrtw/canape/backend/web"
|
||||||
@ -37,7 +38,7 @@ func SignupPOSTHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error
|
|||||||
return e.RenderError(w, fmt.Errorf("Passwords missmatch"))
|
return e.RenderError(w, fmt.Errorf("Passwords missmatch"))
|
||||||
}
|
}
|
||||||
|
|
||||||
user := User{Name: data.Username}
|
user := backend.User{Name: data.Username}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
user.Hash, err = e.Auth.GenHash(data.Password)
|
user.Hash, err = e.Auth.GenHash(data.Password)
|
||||||
@ -71,7 +72,7 @@ func LoginPOSTHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error
|
|||||||
|
|
||||||
token, err := e.Auth.Login(r, data.Username, data.Password)
|
token, err := e.Auth.Login(r, data.Username, data.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == auth.ErrInvalidPassword || err == ErrUnknownUser {
|
if err == auth.ErrInvalidPassword || err == backend.ErrUnknownUser {
|
||||||
return e.RenderError(w, fmt.Errorf("Error invalid user or password"))
|
return e.RenderError(w, fmt.Errorf("Error invalid user or password"))
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
@ -91,11 +92,7 @@ func LoginPOSTHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error
|
|||||||
|
|
||||||
// DetailsHandler show user details
|
// DetailsHandler show user details
|
||||||
func DetailsHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func DetailsHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
v := auth.GetCurrentUser(r, e.Log)
|
user := auth.GetCurrentUser(r, e.Log)
|
||||||
user, ok := v.(*User)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("invalid user type")
|
|
||||||
}
|
|
||||||
|
|
||||||
var polochonConfig config.UserPolochon
|
var polochonConfig config.UserPolochon
|
||||||
if user.PolochonID.Valid && user.PolochonID.String != "" {
|
if user.PolochonID.Valid && user.PolochonID.String != "" {
|
||||||
@ -115,11 +112,7 @@ func DetailsHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
|
|
||||||
// EditHandler allow editing user info and configuration
|
// EditHandler allow editing user info and configuration
|
||||||
func EditHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func EditHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
v := auth.GetCurrentUser(r, e.Log)
|
user := auth.GetCurrentUser(r, e.Log)
|
||||||
user, ok := v.(*User)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("invalid user type")
|
|
||||||
}
|
|
||||||
|
|
||||||
var data struct {
|
var data struct {
|
||||||
PolochonID string `json:"polochon_id"`
|
PolochonID string `json:"polochon_id"`
|
||||||
@ -169,11 +162,7 @@ func EditHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error {
|
|||||||
|
|
||||||
// GetTokensHandler lists the tokens of a user
|
// GetTokensHandler lists the tokens of a user
|
||||||
func GetTokensHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func GetTokensHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
v := auth.GetCurrentUser(r, e.Log)
|
user := auth.GetCurrentUser(r, e.Log)
|
||||||
user, ok := v.(*User)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("invalid user type")
|
|
||||||
}
|
|
||||||
|
|
||||||
tokens, err := tokens.GetUserTokens(e.Database, user.Name)
|
tokens, err := tokens.GetUserTokens(e.Database, user.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -188,11 +177,7 @@ func DeleteTokenHandler(e *web.Env, w http.ResponseWriter, r *http.Request) erro
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
token := vars["token"]
|
token := vars["token"]
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, e.Log)
|
user := auth.GetCurrentUser(r, e.Log)
|
||||||
user, ok := v.(*User)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("invalid user type")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := tokens.DeleteToken(e.Database, user.Name, token); err != nil {
|
if err := tokens.DeleteToken(e.Database, user.Name, token); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -206,11 +191,7 @@ func EditTokenHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error
|
|||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
token := vars["token"]
|
token := vars["token"]
|
||||||
|
|
||||||
v := auth.GetCurrentUser(r, e.Log)
|
user := auth.GetCurrentUser(r, e.Log)
|
||||||
user, ok := v.(*User)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("invalid user type")
|
|
||||||
}
|
|
||||||
|
|
||||||
t, err := tokens.GetUserToken(e.Database, user.Name, token)
|
t, err := tokens.GetUserToken(e.Database, user.Name, token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -235,11 +216,7 @@ func EditTokenHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error
|
|||||||
// GetModulesStatus returns the status of the modules
|
// GetModulesStatus returns the status of the modules
|
||||||
func GetModulesStatus(e *web.Env, w http.ResponseWriter, r *http.Request) error {
|
func GetModulesStatus(e *web.Env, w http.ResponseWriter, r *http.Request) error {
|
||||||
// Get the user from the request
|
// Get the user from the request
|
||||||
v := auth.GetCurrentUser(r, e.Log)
|
user := auth.GetCurrentUser(r, e.Log)
|
||||||
user, ok := v.(*User)
|
|
||||||
if !ok {
|
|
||||||
return e.RenderError(w, fmt.Errorf("invalid user type"))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a papi client
|
// Create a papi client
|
||||||
client, err := user.NewPapiClient()
|
client, err := user.NewPapiClient()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user