Change: Update Database auth to user method
This commit is contained in:
@@ -6,7 +6,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type WalkRequest struct {
|
type WalkRequest struct {
|
||||||
Token string `json:"token"`
|
|
||||||
Root string `json:"root"`
|
Root string `json:"root"`
|
||||||
Pattern []string `json:"pattern"`
|
Pattern []string `json:"pattern"`
|
||||||
}
|
}
|
||||||
@@ -24,7 +23,7 @@ func (api *API) HandleReset(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check token
|
// check token
|
||||||
err = api.CheckToken(w, r, resetRequest.Token)
|
err = api.CheckAdmin(w, r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -53,7 +52,7 @@ func (api *API) HandleWalk(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check token match
|
// check token match
|
||||||
err = api.CheckToken(w, r, walkRequest.Token)
|
err = api.CheckAdmin(w, r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,12 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrNotLoggedIn = errors.New("not logged in")
|
||||||
|
ErrNotAdmin = errors.New("not admin")
|
||||||
)
|
)
|
||||||
|
|
||||||
type Error struct {
|
type Error struct {
|
||||||
|
|||||||
@@ -143,3 +143,26 @@ func (api *API) HandleRegister(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (api *API) CheckAdmin(w http.ResponseWriter, r *http.Request) error {
|
||||||
|
session, _ := api.store.Get(r, api.defaultSessionName)
|
||||||
|
userId, ok := session.Values["userId"]
|
||||||
|
if !ok {
|
||||||
|
api.HandleError(w, r, ErrNotLoggedIn)
|
||||||
|
return ErrNotLoggedIn
|
||||||
|
}
|
||||||
|
|
||||||
|
user, err := api.Db.GetUserById(userId.(int64))
|
||||||
|
if err != nil {
|
||||||
|
api.HandleError(w, r, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if user.Role != database.RoleAdmin {
|
||||||
|
api.HandleError(w, r, ErrNotAdmin)
|
||||||
|
return ErrNotAdmin
|
||||||
|
}
|
||||||
|
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ type User struct {
|
|||||||
AvatarId int64 `json:"avatar_id"`
|
AvatarId int64 `json:"avatar_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
RoleAnonymous = int64(0)
|
||||||
|
RoleAdmin = int64(1)
|
||||||
|
RoleUser = int64(2)
|
||||||
|
)
|
||||||
|
|
||||||
func (f *File) Path() (string, error) {
|
func (f *File) Path() (string, error) {
|
||||||
folder, err := f.Db.GetFolder(f.Folder_id)
|
folder, err := f.Db.GetFolder(f.Folder_id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -4,19 +4,27 @@ import { useNavigate } from "react-router";
|
|||||||
function Manage(props) {
|
function Manage(props) {
|
||||||
let navigate = useNavigate();
|
let navigate = useNavigate();
|
||||||
|
|
||||||
const [token, setToken] = useState("");
|
|
||||||
const [walkPath, setWalkPath] = useState("");
|
const [walkPath, setWalkPath] = useState("");
|
||||||
|
const [patternString, setPatternString] = useState("");
|
||||||
|
|
||||||
function updateDatabase() {
|
function updateDatabase() {
|
||||||
|
// split pattern string into array
|
||||||
|
let patternArray = patternString.split(" ");
|
||||||
|
// remove whitespace from array
|
||||||
|
patternArray = patternArray.map((item) => item.trim());
|
||||||
|
// remove empty strings from array
|
||||||
|
patternArray = patternArray.filter((item) => item !== "");
|
||||||
|
// add dot before item array
|
||||||
|
patternArray = patternArray.map((item) => "." + item);
|
||||||
|
|
||||||
fetch("/api/v1/walk", {
|
fetch("/api/v1/walk", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
token: token,
|
|
||||||
root: walkPath,
|
root: walkPath,
|
||||||
pattern: [".wav", ".mp3"],
|
pattern: patternArray
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
.then((res) => res.json())
|
.then((res) => res.json())
|
||||||
@@ -56,18 +64,19 @@ function Manage(props) {
|
|||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
<hr />
|
<hr />
|
||||||
<input
|
<h3>Update Database</h3>
|
||||||
type="text"
|
|
||||||
value={token}
|
|
||||||
placeholder="token"
|
|
||||||
onChange={(e) => setToken(e.target.value)}
|
|
||||||
/>
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value={walkPath}
|
value={walkPath}
|
||||||
placeholder="walk path"
|
placeholder="walk path"
|
||||||
onChange={(e) => setWalkPath(e.target.value)}
|
onChange={(e) => setWalkPath(e.target.value)}
|
||||||
/>
|
/>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
value={patternString}
|
||||||
|
placeholder="pattern wav flac mp3"
|
||||||
|
onChange={(e) => setPatternString(e.target.value)}
|
||||||
|
/>
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
updateDatabase();
|
updateDatabase();
|
||||||
|
|||||||
Reference in New Issue
Block a user