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-form ref="newUser">
|
||||
<v-text-field
|
||||
v-model="editedItem.name"
|
||||
label="Link Name"
|
||||
:rules="[existsRule]"
|
||||
validate-on-blur
|
||||
></v-text-field>
|
||||
<v-row class="justify-center mt-3">
|
||||
<v-text-field
|
||||
class="mr-2"
|
||||
v-model="editedItem.name"
|
||||
label="Link Name"
|
||||
:rules="[existsRule]"
|
||||
validate-on-blur
|
||||
></v-text-field>
|
||||
<v-checkbox
|
||||
v-model="editedItem.admin"
|
||||
label="Admin"
|
||||
></v-checkbox>
|
||||
</v-row>
|
||||
</v-form>
|
||||
</v-card-text>
|
||||
|
||||
|
@ -77,6 +84,14 @@
|
|||
</v-icon>
|
||||
</v-btn>
|
||||
</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 }">
|
||||
<v-btn class="mr-1" small color="error" @click="deleteItem(item)">
|
||||
<v-icon small left>
|
||||
|
@ -110,18 +125,21 @@ export default {
|
|||
},
|
||||
{ text: "Name", value: "name" },
|
||||
{ text: "Token", value: "token" },
|
||||
{ text: "Admin", value: "admin", align: "center" },
|
||||
{ text: "", value: "actions", sortable: false, align: "center" },
|
||||
],
|
||||
links: [],
|
||||
editedIndex: -1,
|
||||
editedItem: {
|
||||
name: "",
|
||||
admin: false,
|
||||
token: "",
|
||||
id: 0,
|
||||
},
|
||||
defaultItem: {
|
||||
name: "",
|
||||
token: "",
|
||||
admin: false,
|
||||
id: 0,
|
||||
},
|
||||
}),
|
||||
|
@ -205,7 +223,10 @@ export default {
|
|||
api.links.update(this.editedItem);
|
||||
this.close();
|
||||
} 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();
|
||||
}
|
||||
await this.initialize();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
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):
|
||||
|
@ -7,19 +7,23 @@ class SignUp(SqlAlchemyBase, BaseMixins):
|
|||
id = Column(Integer, primary_key=True)
|
||||
token = Column(String, nullable=False, index=True)
|
||||
name = Column(String, index=True)
|
||||
admin = Column(Boolean, default=False)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
session,
|
||||
token,
|
||||
name,
|
||||
admin,
|
||||
) -> None:
|
||||
self.token = token
|
||||
self.name = name
|
||||
self.admin = admin
|
||||
|
||||
def dict(self):
|
||||
return {
|
||||
"id": self.id,
|
||||
"name": self.name,
|
||||
"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 """
|
||||
|
||||
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)
|
||||
|
||||
return db_entry
|
||||
|
@ -57,6 +61,7 @@ async def create_user_with_token(
|
|||
return {"details": "invalid token"}
|
||||
|
||||
# Create User
|
||||
new_user.admin = db_entry.get("admin")
|
||||
new_user.password = get_password_hash(new_user.password)
|
||||
data = db.users.create(session, new_user.dict())
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ from fastapi_camelcase import CamelModel
|
|||
|
||||
class SignUpIn(CamelModel):
|
||||
name: str
|
||||
admin: bool
|
||||
|
||||
|
||||
class SignUpToken(SignUpIn):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue