createUser method

Future<Map<String, dynamic>?> createUser({
  1. required String token,
  2. required String username,
  3. required String password,
  4. required String role,
})

Creates a new user.

token JWT authentication token. username The user's username. password The user's password. role User role (admin, user, view-only). Returns a Map with the user data or null on error.

Example response:

{
  "id": "1a457e1a-121a-11ee-be56-0242ac120002",
  "username": "umami",
  "role": "admin",
  "createdAt": "2023-04-13T20:22:55.756Z"
}

Implementation

Future<Map<String, dynamic>?> createUser({
  required String token,
  required String username,
  required String password,
  required String role,
}) async {
  try {
    final response = await http.post(
      Uri.parse('$endpoint/api/users'),
      headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer $token',
      },
      body: jsonEncode({
        'username': username,
        'password': password,
        'role': role,
      }),
    );

    if (response.statusCode == 200) {
      return jsonDecode(response.body) as Map<String, dynamic>;
    }

    // Tenta decodificar o JSON de erro
    try {
      final errorJson = jsonDecode(response.body);
      debugPrint('Failed to create user: ${response.statusCode}');
      debugPrint('Error JSON: $errorJson');
    } catch (e) {
      debugPrint('Failed to create user: ${response.statusCode} ${response.body}');
    }
    return null;
  } catch (e) {
    debugPrint('Create user error: $e');
    return null;
  }
}