Compare commits
2 Commits
60dd258b45
...
635270dfdd
Author | SHA1 | Date | |
---|---|---|---|
|
635270dfdd | ||
|
95a6d3d9f1 |
@ -14,30 +14,39 @@ namespace API.Application.Users.Commands
|
||||
_repository = repository;
|
||||
}
|
||||
|
||||
public async Task<IActionResult> Handle(UpdateUserDTO UpdateUserDTO)
|
||||
public async Task<IActionResult> Handle(UpdateUserDTO updateUserDTO)
|
||||
{
|
||||
List<User> existingUsers = await _repository.QueryAllUsersAsync();
|
||||
User currentUser = await _repository.QueryUserByIdAsync(UpdateUserDTO.Id);
|
||||
User currentUser = await _repository.QueryUserByIdAsync(updateUserDTO.Id);
|
||||
|
||||
foreach (User existingUser in existingUsers)
|
||||
{
|
||||
if (existingUser.Username == UpdateUserDTO.Username && existingUser.Username != currentUser.Username)
|
||||
if (existingUser.Username == updateUserDTO.Username && existingUser.Username != currentUser.Username)
|
||||
{
|
||||
return new ConflictObjectResult(new { message = "Username is already in use." });
|
||||
}
|
||||
|
||||
if (existingUser.Email == UpdateUserDTO.Email && existingUser.Email != currentUser.Email)
|
||||
if (existingUser.Email == updateUserDTO.Email && existingUser.Email != currentUser.Email)
|
||||
{
|
||||
return new ConflictObjectResult(new { message = "Email is already in use." });
|
||||
}
|
||||
}
|
||||
|
||||
string hashedPassword = BCrypt.Net.BCrypt.HashPassword(UpdateUserDTO.Password);
|
||||
if (updateUserDTO.Password != "")
|
||||
{
|
||||
if (IsPasswordSecure(updateUserDTO.Password))
|
||||
{
|
||||
string hashedPassword = BCrypt.Net.BCrypt.HashPassword(updateUserDTO.Password);
|
||||
currentUser.HashedPassword = hashedPassword;
|
||||
}
|
||||
}
|
||||
if (updateUserDTO.Username != "")
|
||||
currentUser.Username = updateUserDTO.Username;
|
||||
if (updateUserDTO.Email != "")
|
||||
currentUser.Email = updateUserDTO.Email;
|
||||
|
||||
|
||||
|
||||
|
||||
currentUser.Username = UpdateUserDTO.Username;
|
||||
currentUser.Email = UpdateUserDTO.Email;
|
||||
currentUser.HashedPassword = hashedPassword;
|
||||
|
||||
bool success = await _repository.UpdateUserAsync(currentUser);
|
||||
if (success)
|
||||
|
@ -89,6 +89,8 @@ class _SideMenuState extends State<SideMenu> {
|
||||
Navigator.pushReplacementNamed(context, '/home');
|
||||
},
|
||||
),
|
||||
...(_isLoggedIn
|
||||
? [
|
||||
ListTile(
|
||||
title: const Text('Favorites'),
|
||||
leading: const Icon(Icons.star),
|
||||
@ -110,8 +112,7 @@ class _SideMenuState extends State<SideMenu> {
|
||||
thickness: 2,
|
||||
indent: 40,
|
||||
),
|
||||
...(_isLoggedIn
|
||||
? [
|
||||
|
||||
ListTile(
|
||||
title: const Text('Log out'),
|
||||
leading: const Icon(Icons.logout),
|
||||
|
@ -1,5 +1,3 @@
|
||||
import 'dart:math';
|
||||
import 'dart:developer' as useMAN;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mobile/models.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
@ -22,6 +20,8 @@ class _ProfilePageState extends State<EditProfilePage> {
|
||||
TextEditingController passwordInput = TextEditingController();
|
||||
TextEditingController confirmPasswordInput = TextEditingController();
|
||||
|
||||
set userData(User userData) {}
|
||||
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@ -66,17 +66,20 @@ class _ProfilePageState extends State<EditProfilePage> {
|
||||
return;
|
||||
}
|
||||
|
||||
useMAN.log('data');
|
||||
|
||||
if (response != null) {
|
||||
user = User(
|
||||
User updatedUser = User(
|
||||
id!,
|
||||
emailInput.text,
|
||||
usernameInput.text,
|
||||
DateTime.now(),
|
||||
);
|
||||
setState(() {
|
||||
user = updatedUser;
|
||||
});
|
||||
|
||||
Navigator.of(context).pop(); // Close the dialog
|
||||
Navigator.pushReplacementNamed(context, '/profile');
|
||||
|
||||
} else {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Something went wrong! Please contact an admin.')),
|
||||
|
@ -1,11 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mobile/base/sidemenu.dart';
|
||||
import 'package:mobile/base/variables.dart';
|
||||
import 'package:mobile/models.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'dart:convert';
|
||||
import 'api.dart' as api;
|
||||
import 'base/variables.dart';
|
||||
|
||||
class LoginPage extends StatefulWidget {
|
||||
const LoginPage({super.key});
|
||||
@ -40,6 +40,14 @@ class _LoginPageState extends State<LoginPage> {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
setState(() {
|
||||
user = null;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SideMenu(
|
||||
|
@ -1,5 +1,4 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mobile/base/variables.dart';
|
||||
import 'package:mobile/models.dart';
|
||||
@ -25,15 +24,6 @@ class _ProfilePageState extends State<ProfilePage> {
|
||||
}
|
||||
|
||||
Future<void> getProfile() async {
|
||||
if (!await api.isLoggedIn(context)) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text('Please log in to view this page')));
|
||||
Navigator.pushReplacementNamed(context, '/login');
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (user != null) {
|
||||
setState(() {
|
||||
userData = user!;
|
||||
|
@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:mobile/base/sidemenu.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:mobile/base/variables.dart';
|
||||
import 'api.dart' as api;
|
||||
|
||||
class RegisterPage extends StatefulWidget {
|
||||
@ -36,6 +37,14 @@ class _RegisterPageState extends State<RegisterPage> {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
setState(() {
|
||||
user = null;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SideMenu(
|
||||
|
Loading…
Reference in New Issue
Block a user