from fastapi import APIRouter, Response
from util.auth_lib import hash, gen_token
from service.auth_service import Credential, AuthService

router = APIRouter()

@router.post("/auth/login")
def login(auth: Credential, resp: Response):
	service = AuthService()
	data = service.read(auth.username)
	if data == None:
		resp.status_code = 401
		return {
			"ok": 0,
			"errno": "Unauthorized"
		}

	hashed = hash(auth.password, data.salt)
	if data.username != auth.username or data.password != hashed:
		resp.status_code = 401
		return {
			"ok": 0,
			"errno": "Unauthorized"
		}
	
	token = gen_token(auth.username, hashed)
	return {
		"ok": 1,
		"token": "Basic {}".format(token)
	}