mirror of
https://github.com/hay-kot/mealie.git
synced 2025-08-22 14:33:33 -07:00
admin signup
This commit is contained in:
parent
aa85c7f655
commit
5729a5f6af
4 changed files with 40 additions and 9 deletions
|
@ -39,12 +39,19 @@
|
||||||
|
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-form ref="newUser">
|
<v-form ref="newUser">
|
||||||
<v-text-field
|
<v-row class="justify-center mt-3">
|
||||||
v-model="editedItem.name"
|
<v-text-field
|
||||||
label="Link Name"
|
class="mr-2"
|
||||||
:rules="[existsRule]"
|
v-model="editedItem.name"
|
||||||
validate-on-blur
|
label="Link Name"
|
||||||
></v-text-field>
|
:rules="[existsRule]"
|
||||||
|
validate-on-blur
|
||||||
|
></v-text-field>
|
||||||
|
<v-checkbox
|
||||||
|
v-model="editedItem.admin"
|
||||||
|
label="Admin"
|
||||||
|
></v-checkbox>
|
||||||
|
</v-row>
|
||||||
</v-form>
|
</v-form>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
|
|
||||||
|
@ -77,6 +84,14 @@
|
||||||
</v-icon>
|
</v-icon>
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-slot:item.admin="{ item }">
|
||||||
|
<v-btn small :color="item.admin ? 'success' : 'error'" text>
|
||||||
|
<v-icon small left>
|
||||||
|
mdi-account-cog
|
||||||
|
</v-icon>
|
||||||
|
{{ item.admin ? "Yes" : "No" }}
|
||||||
|
</v-btn>
|
||||||
|
</template>
|
||||||
<template v-slot:item.actions="{ item }">
|
<template v-slot:item.actions="{ item }">
|
||||||
<v-btn class="mr-1" small color="error" @click="deleteItem(item)">
|
<v-btn class="mr-1" small color="error" @click="deleteItem(item)">
|
||||||
<v-icon small left>
|
<v-icon small left>
|
||||||
|
@ -110,18 +125,21 @@ export default {
|
||||||
},
|
},
|
||||||
{ text: "Name", value: "name" },
|
{ text: "Name", value: "name" },
|
||||||
{ text: "Token", value: "token" },
|
{ text: "Token", value: "token" },
|
||||||
|
{ text: "Admin", value: "admin", align: "center" },
|
||||||
{ text: "", value: "actions", sortable: false, align: "center" },
|
{ text: "", value: "actions", sortable: false, align: "center" },
|
||||||
],
|
],
|
||||||
links: [],
|
links: [],
|
||||||
editedIndex: -1,
|
editedIndex: -1,
|
||||||
editedItem: {
|
editedItem: {
|
||||||
name: "",
|
name: "",
|
||||||
|
admin: false,
|
||||||
token: "",
|
token: "",
|
||||||
id: 0,
|
id: 0,
|
||||||
},
|
},
|
||||||
defaultItem: {
|
defaultItem: {
|
||||||
name: "",
|
name: "",
|
||||||
token: "",
|
token: "",
|
||||||
|
admin: false,
|
||||||
id: 0,
|
id: 0,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
@ -205,7 +223,10 @@ export default {
|
||||||
api.links.update(this.editedItem);
|
api.links.update(this.editedItem);
|
||||||
this.close();
|
this.close();
|
||||||
} else if (this.$refs.newUser.validate()) {
|
} else if (this.$refs.newUser.validate()) {
|
||||||
api.signUps.createToken({ name: this.editedItem.name });
|
api.signUps.createToken({
|
||||||
|
name: this.editedItem.name,
|
||||||
|
admin: this.editedItem.admin,
|
||||||
|
});
|
||||||
this.close();
|
this.close();
|
||||||
}
|
}
|
||||||
await this.initialize();
|
await this.initialize();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from db.models.model_base import BaseMixins, SqlAlchemyBase
|
from db.models.model_base import BaseMixins, SqlAlchemyBase
|
||||||
from sqlalchemy import Column, Integer, String
|
from sqlalchemy import Column, Integer, String, Boolean
|
||||||
|
|
||||||
|
|
||||||
class SignUp(SqlAlchemyBase, BaseMixins):
|
class SignUp(SqlAlchemyBase, BaseMixins):
|
||||||
|
@ -7,19 +7,23 @@ class SignUp(SqlAlchemyBase, BaseMixins):
|
||||||
id = Column(Integer, primary_key=True)
|
id = Column(Integer, primary_key=True)
|
||||||
token = Column(String, nullable=False, index=True)
|
token = Column(String, nullable=False, index=True)
|
||||||
name = Column(String, index=True)
|
name = Column(String, index=True)
|
||||||
|
admin = Column(Boolean, default=False)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
session,
|
session,
|
||||||
token,
|
token,
|
||||||
name,
|
name,
|
||||||
|
admin,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.token = token
|
self.token = token
|
||||||
self.name = name
|
self.name = name
|
||||||
|
self.admin = admin
|
||||||
|
|
||||||
def dict(self):
|
def dict(self):
|
||||||
return {
|
return {
|
||||||
"id": self.id,
|
"id": self.id,
|
||||||
"name": self.name,
|
"name": self.name,
|
||||||
"token": self.token,
|
"token": self.token,
|
||||||
|
"admin": self.admin
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,11 @@ async def create_user_sign_up_key(
|
||||||
""" Generates a Random Token that a new user can sign up with """
|
""" Generates a Random Token that a new user can sign up with """
|
||||||
|
|
||||||
if current_user.admin:
|
if current_user.admin:
|
||||||
sign_up = {"token": str(uuid.uuid1().hex), "name": key_data.name}
|
sign_up = {
|
||||||
|
"token": str(uuid.uuid1().hex),
|
||||||
|
"name": key_data.name,
|
||||||
|
"admin": key_data.admin,
|
||||||
|
}
|
||||||
db_entry = db.sign_ups.create(session, sign_up)
|
db_entry = db.sign_ups.create(session, sign_up)
|
||||||
|
|
||||||
return db_entry
|
return db_entry
|
||||||
|
@ -57,6 +61,7 @@ async def create_user_with_token(
|
||||||
return {"details": "invalid token"}
|
return {"details": "invalid token"}
|
||||||
|
|
||||||
# Create User
|
# Create User
|
||||||
|
new_user.admin = db_entry.get("admin")
|
||||||
new_user.password = get_password_hash(new_user.password)
|
new_user.password = get_password_hash(new_user.password)
|
||||||
data = db.users.create(session, new_user.dict())
|
data = db.users.create(session, new_user.dict())
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ from fastapi_camelcase import CamelModel
|
||||||
|
|
||||||
class SignUpIn(CamelModel):
|
class SignUpIn(CamelModel):
|
||||||
name: str
|
name: str
|
||||||
|
admin: bool
|
||||||
|
|
||||||
|
|
||||||
class SignUpToken(SignUpIn):
|
class SignUpToken(SignUpIn):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue