File tree Expand file tree Collapse file tree 8 files changed +79
-40
lines changed
Expand file tree Collapse file tree 8 files changed +79
-40
lines changed Original file line number Diff line number Diff line change 1- version : ' 3.5 '
1+ version : ' 3.7 '
22
33services :
44 postgres :
@@ -13,6 +13,7 @@ services:
1313 ports :
1414 - " 5432:5432"
1515 restart : unless-stopped
16+ platform : linux/amd64
1617
1718volumes :
1819 postgres:
Original file line number Diff line number Diff line change 11import 'package:dart_frog/dart_frog.dart' ;
2- import 'package:dart_frog_auth/dart_frog_auth.dart' ;
3- import 'package:shared/shared.dart' ;
42import 'package:stormberry/stormberry.dart' ;
53
6- import 'authy .dart' ;
4+ import 'authenticator .dart' ;
75
86/*
97NOTE: This won't be readable while migration in stormberry, so requires
@@ -24,16 +22,16 @@ final database = Database(
2422);
2523
2624Handler middleware (Handler handler) {
27- return handler. use (
28- provider < Database >((context) {
29- return database;
30- }),
31- ). use (
32- bearerAuthentication < User >(
33- authenticator : (context, token) async {
34- final authy = context. read < Authy >();
35- return authy. verifyToken (token);
36- },
37- ),
38- );
25+ final authy = Authenticator (database : database);
26+ return handler
27+ . use (
28+ provider < Authenticator >((context) {
29+ return authy;
30+ }),
31+ )
32+ . use (
33+ provider < Database >((context) {
34+ return database;
35+ } ),
36+ );
3937}
Original file line number Diff line number Diff line change @@ -6,7 +6,7 @@ import 'package:db/db.dart' as db;
66import 'package:shared/shared.dart' ;
77import 'package:stormberry/stormberry.dart' ;
88
9- import '../authy .dart' ;
9+ import '../authenticator .dart' ;
1010
1111Future <Response > onRequest (RequestContext context) async {
1212 switch (context.request.method) {
@@ -66,7 +66,7 @@ Future<Response> _login(
6666 );
6767 }
6868
69- final authy = context.read <Authy >();
69+ final authy = context.read <Authenticator >();
7070 final token = await authy.generateToken (User .fromUserView (user));
7171
7272 return Response .json (
Original file line number Diff line number Diff line change @@ -37,7 +37,9 @@ Future<Response> _register(
3737 statusCode: 205 ,
3838 body: {
3939 'status' : 'failed' ,
40- 'message' : 'username ${body ['username' ]} is already taken!' ,
40+ 'message' :
41+ // ignore: lines_longer_than_80_chars
42+ 'username ${body ['username' ]} or email ${body ['email' ]} is already taken!' ,
4143 },
4244 );
4345 }
@@ -62,10 +64,7 @@ Future<Response> _register(
6264
6365 final id = await database.users.insertOne (request);
6466
65- final sharedUser = User .fromJson ({
66- ...body,
67- 'id' : id,
68- });
67+ final sharedUser = User .fromJson ({...body, 'id' : id});
6968
7069 return Response .json (
7170 body: {
Original file line number Diff line number Diff line change @@ -4,8 +4,7 @@ import 'package:dart_frog/dart_frog.dart';
44import 'package:dart_jsonwebtoken/dart_jsonwebtoken.dart' ;
55import 'package:db/db.dart' as db;
66import 'package:shared/shared.dart' ;
7-
8- import '_middleware.dart' ;
7+ import 'package:stormberry/stormberry.dart' ;
98
109Future <Response > onRequest (RequestContext context) async {
1110 switch (context.request.method) {
@@ -20,14 +19,18 @@ Future<Response> onRequest(RequestContext context) async {
2019 }
2120}
2221
23- class Authy {
22+ class Authenticator {
23+ Authenticator ({required this .database});
24+
25+ final Database database;
26+
2427 static const String jwtSecret =
2528 // ignore: lines_longer_than_80_chars
2629 'JWT SECRET AUTH KEY, I AM SORRY IF THIS GOT HACKED.NOT A PRO BACKEND DEVELOPER XD' ;
2730
28- Future <User ? > verifyToken (String ? token) async {
31+ Future <bool > verifyToken (String ? token) async {
2932 if (token == null ) {
30- return null ;
33+ return false ;
3134 }
3235
3336 final users = await database.users.queryUsers ();
@@ -39,11 +42,11 @@ class Authy {
3942
4043 for (final u in users) {
4144 if (u.id == (payload['uid' ] as int )) {
42- return User . fromUserView (u) ;
45+ return true ;
4346 }
4447 }
4548
46- return null ;
49+ return false ;
4750 }
4851
4952 Future <String > generateToken (User user) async {
Original file line number Diff line number Diff line change 1+ import 'package:dart_frog/dart_frog.dart' ;
2+ import 'package:dart_frog_auth/dart_frog_auth.dart' ;
3+ import 'package:stormberry/stormberry.dart' ;
4+
5+ import '../_middleware.dart' ;
6+ import '../authenticator.dart' ;
7+
8+ Handler middleware (Handler handler) {
9+ final authy = Authenticator (database: database);
10+ return handler
11+ .use (
12+ provider <Database >((context) {
13+ return database;
14+ }),
15+ )
16+ .use (
17+ bearerAuthentication <bool >(
18+ authenticator: (context, token) {
19+ return authy.verifyToken (token);
20+ },
21+ ),
22+ );
23+ }
Original file line number Diff line number Diff line change @@ -37,12 +37,7 @@ Future<Response> _get(RequestContext context) async {
3737 sharedPosts = dbPosts.map (Post .fromPostView).toList ();
3838 }
3939
40- return Response .json (
41- body: {
42- 'status' : 'success' ,
43- 'data' : sharedPosts,
44- },
45- );
40+ return Response .json (body: {'status' : 'success' , 'data' : sharedPosts});
4641}
4742
4843Future <Response > _post (
@@ -76,9 +71,6 @@ Future<Response> _post(
7671 final sharedPost = Post .fromPostView (dbPost! );
7772
7873 return Response .json (
79- body: {
80- 'status' : 'success' ,
81- 'data' : sharedPost.toJson (),
82- },
74+ body: {'status' : 'success' , 'data' : sharedPost.toJson ()},
8375 );
8476}
Original file line number Diff line number Diff line change 1+ import 'package:dart_frog/dart_frog.dart' ;
2+ import 'package:dart_frog_auth/dart_frog_auth.dart' ;
3+ import 'package:stormberry/stormberry.dart' ;
4+
5+ import '../_middleware.dart' ;
6+ import '../authenticator.dart' ;
7+
8+ Handler middleware (Handler handler) {
9+ final authy = Authenticator (database: database);
10+ return handler
11+ .use (
12+ provider <Database >((context) {
13+ return database;
14+ }),
15+ )
16+ .use (
17+ bearerAuthentication <bool >(
18+ authenticator: (context, token) {
19+ return authy.verifyToken (token);
20+ },
21+ ),
22+ );
23+ }
You can’t perform that action at this time.
0 commit comments