diff --git a/lib/main.dart b/lib/main.dart index d7262bf..9185352 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -66,6 +66,7 @@ class _MyAppState extends State { routes: { AuthScreen.routeName: (context) => AuthScreen(), NavScreen.routeName: (context) => NavScreen(), + WelcomeScreen.routeName: (context) => WelcomeScreen(), // YogGuru.routeName: (context) => YogGuru(), // Camera.routeName: (context) => Camera(), // SpecificNeeds.routeName: (context) => SpecificNeeds(), diff --git a/lib/screens/userprofile/user_profile.dart b/lib/screens/userprofile/user_profile.dart index b95a272..c0a20da 100644 --- a/lib/screens/userprofile/user_profile.dart +++ b/lib/screens/userprofile/user_profile.dart @@ -2,6 +2,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:yogzen/global/color.dart'; import 'package:yogzen/providers/user_provider.dart'; +import 'package:yogzen/screens/welcome/welcome_screen.dart'; +import 'package:yogzen/services/auth_services.dart'; class UserProfileScreen extends StatefulWidget { const UserProfileScreen({super.key}); @@ -15,9 +17,23 @@ class _UserProfileScreenState extends State { Widget build(BuildContext context) { final user = Provider.of(context).user; return Scaffold( - backgroundColor: klightBlue, - body: Center( - child: Text("User Profile of ${user.name}"), - )); + appBar: AppBar( + title: Text("User Profile"), + actions: [ + IconButton( + onPressed: () { + AuthServices().clearSharedPrefs(); + Navigator.pushNamedAndRemoveUntil( + context, WelcomeScreen.routeName, (route) => false); + }, + icon: Icon(Icons.logout), + ), + ], + ), + backgroundColor: klightBlue, + body: Center( + child: Text("User Profile of ${user.name}"), + ), + ); } } diff --git a/lib/screens/welcome/welcome_screen.dart b/lib/screens/welcome/welcome_screen.dart index f0b20f8..aa667f3 100644 --- a/lib/screens/welcome/welcome_screen.dart +++ b/lib/screens/welcome/welcome_screen.dart @@ -3,6 +3,7 @@ import 'package:yogzen/global/color.dart'; class WelcomeScreen extends StatefulWidget { const WelcomeScreen({super.key}); + static const routeName = '/welcome'; @override State createState() => _WelcomeScreenState(); diff --git a/lib/services/auth_services.dart b/lib/services/auth_services.dart index 2921c26..8e65ee1 100644 --- a/lib/services/auth_services.dart +++ b/lib/services/auth_services.dart @@ -138,7 +138,7 @@ class AuthServices { print(response.body); print(response.statusCode); } catch (e) { - showSnackBar(context: context, text: e.toString()); + print(e.toString()); } } diff --git a/server/controller/userController.go b/server/controller/userController.go index f86c826..c63aed6 100644 --- a/server/controller/userController.go +++ b/server/controller/userController.go @@ -46,22 +46,25 @@ func VerifyPassword(userPassword string, providedPassword string) (bool, string) // signup func Signup() gin.HandlerFunc { return func(c *gin.Context) { + fmt.Println("1") var ctx, cancel = context.WithTimeout(context.Background(), 100*time.Second) defer cancel() var user model.User - + fmt.Println("2") //binding user data from request to user struct if err := c.BindJSON(&user); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } + fmt.Println("3") //apply validation on user data validationErr := validate.Struct(user) if validationErr != nil { c.JSON(http.StatusBadRequest, gin.H{"error": validationErr.Error()}) return } + fmt.Println("4") //check if user already exists count, err := userCollection.CountDocuments(ctx, bson.M{"email": user.Email}) // defer cancel() @@ -70,24 +73,27 @@ func Signup() gin.HandlerFunc { c.JSON(http.StatusInternalServerError, gin.H{"error": "error while checking email"}) return } + fmt.Println("5") password := HashPassword(*user.Password) user.Password = &password if count > 0 { c.JSON(http.StatusInternalServerError, gin.H{"error": "user alraedy exists"}) return } - + fmt.Println("6") //creating tokens and ids user.CreatedAt, _ = time.Parse(time.RFC3339, time.Now().Format(time.RFC3339)) user.UpdatedAt, _ = time.Parse(time.RFC3339, time.Now().Format(time.RFC3339)) user.ID = primitive.NewObjectID() user.UserId = user.ID.Hex() + fmt.Println("7") token, refreshToken, err := helper.GenerateAllToken(*user.Email, *user.Name, *user.UserType, user.UserId) if err != nil { log.Panic(err) c.JSON(http.StatusInternalServerError, gin.H{"error": "token error"}) return } + fmt.Println("8") user.Token = &token user.RefreshToken = &refreshToken @@ -98,13 +104,15 @@ func Signup() gin.HandlerFunc { c.JSON(http.StatusInternalServerError, gin.H{"error": msg}) return } + fmt.Println("9") c.JSON(http.StatusOK, resultInsertedNumber) - + fmt.Println("10") } } func Login() gin.HandlerFunc { return func(c *gin.Context) { + fmt.Println("1") var ctx, cancel = context.WithTimeout(context.Background(), 100*time.Second) defer cancel() var user model.User @@ -113,29 +121,32 @@ func Login() gin.HandlerFunc { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } - + fmt.Println("2") // finding if user exists err := userCollection.FindOne(ctx, bson.M{"email": user.Email}).Decode(&foundUser) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "email or password is incorrect"}) return } - + fmt.Println("3") passwordIsValid, msg := VerifyPassword(*user.Password, *foundUser.Password) if !passwordIsValid { c.JSON(http.StatusInternalServerError, gin.H{"error": msg}) return } + fmt.Println("4") if foundUser.Email == nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "user not found"}) return } + fmt.Println("5") token, refreshToken, err := helper.GenerateAllToken(*foundUser.Email, *foundUser.Name, *foundUser.UserType, foundUser.UserId) if err != nil { log.Panic(err) c.JSON(http.StatusInternalServerError, gin.H{"error": "token error"}) return } + fmt.Println("6") helper.UpdateAllToken(token, refreshToken, foundUser.UserId) err = userCollection.FindOne(ctx, bson.M{"userid": foundUser.UserId}).Decode(&foundUser) @@ -143,8 +154,9 @@ func Login() gin.HandlerFunc { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } + fmt.Println("7") c.JSON(http.StatusOK, foundUser) - + fmt.Println("8") } } diff --git a/server/go.mod b/server/go.mod index 920ed28..f856cc8 100644 --- a/server/go.mod +++ b/server/go.mod @@ -8,6 +8,7 @@ require ( ) require ( + github.com/aws/aws-lambda-go v1.41.0 // indirect github.com/bytedance/sonic v1.9.1 // indirect github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect github.com/gabriel-vasile/mimetype v1.4.2 // indirect diff --git a/server/go.sum b/server/go.sum index 648609f..c109fe6 100644 --- a/server/go.sum +++ b/server/go.sum @@ -1,3 +1,5 @@ +github.com/aws/aws-lambda-go v1.41.0 h1:l/5fyVb6Ud9uYd411xdHZzSf2n86TakxzpvIoz7l+3Y= +github.com/aws/aws-lambda-go v1.41.0/go.mod h1:jwFe2KmMsHmffA1X2R09hH6lFzJQxzI8qK17ewzbQMM= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= diff --git a/test/widget_test.dart b/test/widget_test.dart index 374909a..9af64e6 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -13,7 +13,7 @@ import 'package:yogzen/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); + await tester.pumpWidget( MyApp()); // Verify that our counter starts at 0. expect(find.text('0'), findsOneWidget);