guild.members: validate nickname on update_nickname

- schemas: add nickname type
This commit is contained in:
Luna Mendes 2018-11-22 21:05:29 -03:00
parent 2adc88e9e4
commit 1747d0c346
2 changed files with 10 additions and 6 deletions

View File

@ -170,13 +170,17 @@ async def update_nickname(guild_id):
user_id = await token_check() user_id = await token_check()
await guild_check(user_id, guild_id) await guild_check(user_id, guild_id)
j = await request.get_json() j = validate(await request.get_json(), {
'nick': {'type': 'nickname'}
})
nick = j['nick'] or None
await app.db.execute(""" await app.db.execute("""
UPDATE members UPDATE members
SET nickname = $1 SET nickname = $1
WHERE user_id = $2 AND guild_id = $3 WHERE user_id = $2 AND guild_id = $3
""", j['nick'], user_id, guild_id) """, nick, user_id, guild_id)
member = await app.storage.get_member_data_one(guild_id, user_id) member = await app.storage.get_member_data_one(guild_id, user_id)
member.pop('joined_at') member.pop('joined_at')

View File

@ -127,6 +127,9 @@ class LitecordValidator(Validator):
def _validate_type_theme(self, value: str) -> bool: def _validate_type_theme(self, value: str) -> bool:
return value in ['light', 'dark'] return value in ['light', 'dark']
def _validate_type_nickname(self, value: str) -> bool:
return isinstance(value, str) and len(value) in range(1, 32)
def validate(reqjson: Union[Dict, List], schema: Dict, def validate(reqjson: Union[Dict, List], schema: Dict,
raise_err: bool = True) -> Union[Dict, List]: raise_err: bool = True) -> Union[Dict, List]:
@ -350,10 +353,7 @@ ROLE_UPDATE_POSITION = {
MEMBER_UPDATE = { MEMBER_UPDATE = {
'nick': { 'nick': {
'type': 'username', 'type': 'nickname', 'required': False},
'minlength': 1, 'maxlength': 100,
'required': False,
},
'roles': {'type': 'list', 'required': False, 'roles': {'type': 'list', 'required': False,
'schema': {'coerce': int}}, 'schema': {'coerce': int}},
'mute': {'type': 'boolean', 'required': False}, 'mute': {'type': 'boolean', 'required': False},