admin signup

This commit is contained in:
hay-kot 2021-03-03 21:04:51 -09:00
commit 5729a5f6af
4 changed files with 40 additions and 9 deletions

View file

@ -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();

View file

@ -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
}

View file

@ -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())

View file

@ -3,6 +3,7 @@ from fastapi_camelcase import CamelModel
class SignUpIn(CamelModel):
name: str
admin: bool
class SignUpToken(SignUpIn):