23 lines
761 B
Python
23 lines
761 B
Python
|
from base64 import b64encode
|
||
|
|
||
|
from marshmallow import pre_dump
|
||
|
from marshmallow.fields import Email, String, UUID
|
||
|
|
||
|
from ereuse_devicehub.resources.schemas import Thing
|
||
|
|
||
|
|
||
|
class User(Thing):
|
||
|
id = UUID(dump_only=True)
|
||
|
email = Email(required=True)
|
||
|
password = String(load_only=True, required=True)
|
||
|
token = String(dump_only=True,
|
||
|
description='Use this token in an Authorization header to access the app.'
|
||
|
'The token can change overtime.')
|
||
|
|
||
|
@pre_dump
|
||
|
def base64encode_token(self, data: dict):
|
||
|
"""Encodes the token to base64 so clients don't have to."""
|
||
|
# framework needs ':' at the end
|
||
|
data['token'] = b64encode(str.encode(str(data['token']) + ':'))
|
||
|
return data
|