Compare commits

...

3 Commits

3 changed files with 26 additions and 24 deletions

View File

@ -71,7 +71,9 @@ pub async fn login(
let req = request.into_inner(); let req = request.into_inner();
let users = user_list.lock().await; let users = user_list.lock().await;
if let Some(user) = users.iter().find(|u| u.person.name == req.username) if let Some(user) = users
.iter()
.find(|u| u.person.name.to_lowercase() == req.username.to_lowercase())
&& bcrypt::verify(&req.password, &user.password_hash).unwrap_or(false) && bcrypt::verify(&req.password, &user.password_hash).unwrap_or(false)
{ {
let token = Uuid::new_v4().to_string(); let token = Uuid::new_v4().to_string();

View File

@ -78,14 +78,14 @@ async fn add_game(
let mut games = game_list.lock().await; let mut games = game_list.lock().await;
let mut game = game.into_inner(); let mut game = game.into_inner();
if games.iter().any(|g| { game.title = game.title.trim().to_string();
if let Some(existing) = games.iter().find(|g| {
g.title == game.title || (g.remote_id == game.remote_id && g.source == game.source) g.title == game.title || (g.remote_id == game.remote_id && g.source == game.source)
}) { }) {
return None; return Some(existing.clone());
} }
game.title = game.title.trim().to_string();
games.push(game.clone()); games.push(game.clone());
games.sort_unstable_by(|g1, g2| g1.title.cmp(&g2.title)); games.sort_unstable_by(|g1, g2| g1.title.cmp(&g2.title));

View File

@ -16,13 +16,13 @@ importers:
version: 2.10.1 version: 2.10.1
react: react:
specifier: ^19.2.1 specifier: ^19.2.1
version: 19.2.1 version: 19.2.3
react-dom: react-dom:
specifier: ^19.2.1 specifier: ^19.2.1
version: 19.2.1(react@19.2.1) version: 19.2.3(react@19.2.3)
react-router-dom: react-router-dom:
specifier: ^7.10.1 specifier: ^7.10.1
version: 7.10.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) version: 7.10.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
devDependencies: devDependencies:
'@eslint/js': '@eslint/js':
specifier: ^9.39.1 specifier: ^9.39.1
@ -425,7 +425,7 @@ packages:
resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==} resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==}
engines: {node: ^20.19.0 || >=22.12.0} engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies: peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 vite: npm:rolldown-vite@7.2.5
acorn-jsx@5.3.2: acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
@ -863,10 +863,10 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'} engines: {node: '>=6'}
react-dom@19.2.1: react-dom@19.2.3:
resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==} resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
peerDependencies: peerDependencies:
react: ^19.2.1 react: ^19.2.3
react-refresh@0.18.0: react-refresh@0.18.0:
resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==}
@ -889,8 +889,8 @@ packages:
react-dom: react-dom:
optional: true optional: true
react@19.2.1: react@19.2.3:
resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==} resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
resolve-from@4.0.0: resolve-from@4.0.0:
@ -1845,28 +1845,28 @@ snapshots:
punycode@2.3.1: {} punycode@2.3.1: {}
react-dom@19.2.1(react@19.2.1): react-dom@19.2.3(react@19.2.3):
dependencies: dependencies:
react: 19.2.1 react: 19.2.3
scheduler: 0.27.0 scheduler: 0.27.0
react-refresh@0.18.0: {} react-refresh@0.18.0: {}
react-router-dom@7.10.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1): react-router-dom@7.10.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies: dependencies:
react: 19.2.1 react: 19.2.3
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
react-router: 7.10.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) react-router: 7.10.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react-router@7.10.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1): react-router@7.10.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies: dependencies:
cookie: 1.1.1 cookie: 1.1.1
react: 19.2.1 react: 19.2.3
set-cookie-parser: 2.7.2 set-cookie-parser: 2.7.2
optionalDependencies: optionalDependencies:
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
react@19.2.1: {} react@19.2.3: {}
resolve-from@4.0.0: {} resolve-from@4.0.0: {}