import 'dart:io'; import 'package:backend/authenticator.dart'; import 'package:dart_frog/dart_frog.dart'; import 'package:dart_jsonwebtoken/dart_jsonwebtoken.dart'; import 'package:shared_models/user.dart'; Future<Response> onRequest(RequestContext context) async { // Only allow POST requests if (context.request.method != HttpMethod.post) { return Response(statusCode: HttpStatus.methodNotAllowed); } try { // Parse the request body final body = await context.request.json() as Map<String, dynamic>; final createUserReq = CreateUserRequest.fromJson(body); // Generate token final authenticator = context.read<Authenticator>(); final token = await authenticator.generateToken(username: createUserReq.username); if (token == null) { return Response.json( statusCode: HttpStatus.internalServerError, body: {'error': 'Failed to generate token'}, ); } // Return the token return Response.json( body: {'token': token}, ); } on JWTParseException { return Response.json( statusCode: HttpStatus.badRequest, body: {'error': 'Username is required'}, ); } catch (e) { return Response.json( statusCode: HttpStatus.internalServerError, body: {'error': 'Internal server error'}, ); } }