File size: 4,369 Bytes
112c431
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
from fastapi import APIRouter, Query
from request import RequestUser
from response import ResponseUser as res
from service import UserService
from function import support_function
from fastapi import HTTPException
from response import ResponseUser as res
router = APIRouter()

@router.put("/update_user_info", tags=["User"])
async def update_user_info(request: RequestUser.RequestUpdateUserInfo):
    user_id = request.user_id
    check = support_function.check_value_user_id_controller(user_id)
    if check is not True:
        return check
    uid = request.uid
    email = request.email
    display_name = request.display_name
    photo_url = request.photo_url
    if uid is None or uid.strip() == "":
        return res.ReponseError(status=400,
                                data=res.Message(message="uid field is required.")) 
    if email is None or email.strip() == "":
        return res.ReponseError(status=400,
                                data=res.Message(message="email field is required."))
    if display_name is None or display_name.strip() == "":
        return res.ReponseError(status=400,
                                data=res.Message(message="display_name field is required."))
    if photo_url is None or photo_url.strip() == "":
        return res.ReponseError(status=400,
                                data=res.Message(message="photo_url field is required."))
    return await UserService.update_user_info(request)

@router.get('/check_info_google', tags=["User"])
async def check_info_google(user_id: str = Query(None)):
    check = support_function.check_value_user_id_controller(user_id)
    if check is not True:
        return check
    request =RequestUser.RequestCheckInfoGoogle(user_id=user_id)
    return await UserService.check_info_google(request)

@router.get('/check_info_google_signup', tags=["User"])
async def check_info_google_signup(email: str = None):
    check = support_function.check_value_email_controller(email)
    if check is not True:
        return check
    request =RequestUser.RequestCheckInfoGoogleEmail(email=email)
    return await UserService.check_info_google_email(request)

@router.get('/check_state_login', tags=["User"])
async def check_state_login(user_id: str = Query(None), session_id_now: str = Query(None)):
    check = support_function.check_value_user_id_controller(user_id)
    if check is not True:
        return check
    if session_id_now is None or session_id_now.strip() == "":
        return res.ReponseError(status=400,
                                data=res.Message(message="Session Id is required."))
    try:
        int(session_id_now)
        return res.ReponseError(status=400,
                                data=res.Message(message="Session Id must be a string, not a number."))
    except ValueError:
        pass
    request =RequestUser.RequestCheckStateLogin(user_id=user_id, session_id_now=session_id_now)
    return await UserService.check_state_login(request)


@router.post('/reset_password', tags=["User"])
async def reset_password(request:RequestUser.RequestResetPassword):
    email = request.email
    check = support_function.check_value_email_controller(email)
    if check is not True:
        return check
    return UserService.reset_password(request)

@router.put('/change_password', tags=["User"])
async def reset_password_firebase(request:RequestUser.RequestChangePassword):
    user_id = request.user_id
    check = support_function.check_value_user_id_controller(user_id)
    if check is not True:
        return check
    new_password = request.new_password
    current_password = request.current_password
    confirm_new_password = request.confirm_new_password
    if confirm_new_password is None or confirm_new_password.strip() == "":
        return res.ReponseError(status=400,
                                data=res.Message(message="Confirm New password field is required."))
    elif new_password is None or new_password.strip() == "":
        return res.ReponseError(status=400,
                                data=res.Message(message="New password field is required."))
    elif current_password is None or current_password.strip() == "":
        return res.ReponseError(status=400,
                                data=res.Message(message="Current password field is required."))
    return await UserService.change_password(request)