filebrowser/auth.go
Henrique Dias f6816c9a39 Major changes on API
Former-commit-id: 096988e1e40835be12cdbfc685e58c3a6faf7d54 [formerly c687ad9725e93f7ee34bcef0193bafb6643feb62] [formerly cf70ea15f14f4f849a8f449438ffdb8ab5b60f6e [formerly 1f7974de38e624173d9418bddaacae53414b7db1]]
Former-commit-id: 85e35a88d9d46c2a6fe3598b902ad8ab86019c05 [formerly f38667fb170916541f62b14389b6296e8da2580e]
Former-commit-id: 5addfd36ad865a8644f659e5140453e1fdada62d
2017-07-02 17:40:52 +01:00

55 lines
1.1 KiB
Go

package filemanager
import (
"net/http"
"time"
jwt "github.com/dgrijalva/jwt-go"
"github.com/dgrijalva/jwt-go/request"
)
/* Set up a global string for our secret */
var key = []byte("secret")
type claims struct {
*User
jwt.StandardClaims
}
func getTokenHandler(c *requestContext, w http.ResponseWriter, r *http.Request) (int, error) {
// TODO: get user and password info from the request
// check if the password is correct for that user using a DB or JSOn
// or something.
claims := claims{
c.fm.User,
jwt.StandardClaims{
ExpiresAt: time.Now().Add(time.Minute * 5).Unix(),
Issuer: "test",
},
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
string, err := token.SignedString(key)
if err != nil {
return http.StatusInternalServerError, err
}
w.Write([]byte(string))
return 0, nil
}
func validAuth(c *requestContext, r *http.Request) (bool, *User) {
token, err := request.ParseFromRequestWithClaims(r, request.AuthorizationHeaderExtractor, &claims{},
func(token *jwt.Token) (interface{}, error) {
return key, nil
})
if err == nil && token.Valid {
return true, c.fm.User
}
return false, nil
}