Babies are free
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import 'dart:io';
|
||||
import 'package:backend/extensions/request_context.dart';
|
||||
import 'package:backend/store.dart';
|
||||
import 'package:dart_frog/dart_frog.dart';
|
||||
import 'package:dart_jsonwebtoken/dart_jsonwebtoken.dart';
|
||||
import 'package:shared_models/models/user.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
Future<Response> onRequest(RequestContext context) async {
|
||||
// Only allow POST requests
|
||||
if (context.request.method != HttpMethod.post) {
|
||||
return Response(statusCode: HttpStatus.methodNotAllowed);
|
||||
}
|
||||
|
||||
try {
|
||||
// Generate a new user ID
|
||||
final userId = const Uuid().v4();
|
||||
|
||||
// Create JWT token
|
||||
final jwt = JWT(
|
||||
{
|
||||
'userId': userId,
|
||||
'iat': DateTime.now().millisecondsSinceEpoch,
|
||||
},
|
||||
);
|
||||
|
||||
// Sign the JWT token (store this secret in environment variables in production)
|
||||
final token = jwt.sign(
|
||||
SecretKey(jwtSecret),
|
||||
expiresIn: const Duration(days: 30), // Token expires in 30 days
|
||||
);
|
||||
|
||||
// Create new user
|
||||
final user = User(
|
||||
id: userId,
|
||||
token: token,
|
||||
createdAt: DateTime.now(),
|
||||
);
|
||||
|
||||
// Store user in memory
|
||||
MemoryStore.addUser(user);
|
||||
|
||||
// Return the user credentials
|
||||
return Response.json(
|
||||
body: {
|
||||
'userId': userId,
|
||||
'token': token,
|
||||
},
|
||||
);
|
||||
} catch (e) {
|
||||
return Response.json(
|
||||
statusCode: HttpStatus.internalServerError,
|
||||
body: {'error': e.toString()},
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user