fix/ci #1023
34
.gitea/workflows/update.yml
Normal file
34
.gitea/workflows/update.yml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
name: Update Cargo Dependencies
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 2 * * 5' # Run weekly on Friday at 2am
|
||||||
|
workflow_dispatch: # Allow manual triggering
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-dependencies:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: git.hofer.link/philipp/ci-images:rust-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Update dependencies
|
||||||
|
run: |
|
||||||
|
cargo upgrade
|
||||||
|
cargo update
|
||||||
|
|
||||||
|
- name: Create Pull Request
|
||||||
|
uses: https://git.hofer.link/philipp/create-pull-request@18ef1fdad70eec569ab10292c1fa79c1b5296370
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITEATOKEN }}
|
||||||
|
commit-message: Update Cargo dependencies
|
||||||
|
title: Update Cargo dependencies
|
||||||
|
body: |
|
||||||
|
This PR updates Cargo dependencies to their latest versions.
|
||||||
|
|
||||||
|
@philipp
|
||||||
|
|
||||||
|
- Run `cargo upgrade` to update version requirements in Cargo.toml
|
||||||
|
- Run `cargo update` to update Cargo.lock
|
||||||
|
branch: update-cargo-dependencies
|
||||||
|
delete-branch: true
|
@ -17,11 +17,14 @@ pub struct Activity {
|
|||||||
pub keep_until: Option<NaiveDateTime>,
|
pub keep_until: Option<NaiveDateTime>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: add `reason` as additional db field, to be able to query and show this to the users
|
||||||
pub enum Reason<'a> {
|
pub enum Reason<'a> {
|
||||||
// `User` tried to login with `String` as UserAgent
|
// `User` tried to login with `String` as UserAgent
|
||||||
SuccLogin(&'a User, String),
|
SuccLogin(&'a User, String),
|
||||||
// `User` changed the data of `User`, explanation in `String`
|
// `User` changed the data of `User`, explanation in `String`
|
||||||
UserDataChange(&'a ManageUserUser, &'a User, String),
|
UserDataChange(&'a ManageUserUser, &'a User, String),
|
||||||
|
// New Note for User
|
||||||
|
NewUserNote(&'a ManageUserUser, &'a User, String),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Reason<'_>> for ActivityBuilder {
|
impl From<Reason<'_>> for ActivityBuilder {
|
||||||
@ -36,6 +39,9 @@ impl From<Reason<'_>> for ActivityBuilder {
|
|||||||
"{changed_by} hat die Daten von {changed_user} aktualisiert: {explanation}"
|
"{changed_by} hat die Daten von {changed_user} aktualisiert: {explanation}"
|
||||||
))
|
))
|
||||||
.relevant_for_user(changed_user),
|
.relevant_for_user(changed_user),
|
||||||
|
Reason::NewUserNote(changed_by, user, explanation) => {
|
||||||
|
Self::new(&format!("({changed_by}) {explanation}")).relevant_for_user(user)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@ impl User {
|
|||||||
&self,
|
&self,
|
||||||
db: &SqlitePool,
|
db: &SqlitePool,
|
||||||
updated_by: &ManageUserUser,
|
updated_by: &ManageUserUser,
|
||||||
user: &User,
|
|
||||||
note: &str,
|
note: &str,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
let note = note.trim();
|
let note = note.trim();
|
||||||
@ -25,7 +24,7 @@ impl User {
|
|||||||
ActivityBuilder::from(activity::Reason::UserDataChange(
|
ActivityBuilder::from(activity::Reason::UserDataChange(
|
||||||
updated_by,
|
updated_by,
|
||||||
self,
|
self,
|
||||||
format!("Neue Notizen: {note}"),
|
note.to_string(),
|
||||||
))
|
))
|
||||||
.save(db)
|
.save(db)
|
||||||
.await;
|
.await;
|
||||||
|
@ -919,7 +919,7 @@ impl UserWithMembershipPdf {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use crate::testdb;
|
use crate::{model::user::ManageUserUser, testdb};
|
||||||
|
|
||||||
use super::User;
|
use super::User;
|
||||||
use sqlx::SqlitePool;
|
use sqlx::SqlitePool;
|
||||||
@ -994,8 +994,9 @@ mod test {
|
|||||||
fn reset() {
|
fn reset() {
|
||||||
let pool = testdb!();
|
let pool = testdb!();
|
||||||
let user = User::find_by_id(&pool, 1).await.unwrap();
|
let user = User::find_by_id(&pool, 1).await.unwrap();
|
||||||
|
let changed_by = ManageUserUser::new(&pool, &user).await.unwrap();
|
||||||
|
|
||||||
user.reset_pw(&pool).await;
|
user.reset_pw(&pool, &changed_by).await;
|
||||||
|
|
||||||
let user = User::find_by_id(&pool, 1).await.unwrap();
|
let user = User::find_by_id(&pool, 1).await.unwrap();
|
||||||
assert_eq!(user.pw, None);
|
assert_eq!(user.pw, None);
|
||||||
|
@ -7,11 +7,11 @@ use crate::{
|
|||||||
mail::valid_mails,
|
mail::valid_mails,
|
||||||
role::Role,
|
role::Role,
|
||||||
user::{
|
user::{
|
||||||
AdminUser, AllowedToEditPaymentStatusUser, ManageUserUser, User, UserWithDetails,
|
|
||||||
UserWithMembershipPdf, UserWithRolesAndMembershipPdf, VorstandUser,
|
|
||||||
clubmember::ClubMemberUser, foerdernd::FoerderndUser, member::Member,
|
clubmember::ClubMemberUser, foerdernd::FoerderndUser, member::Member,
|
||||||
regular::RegularUser, scheckbuch::ScheckbuchUser, schnupperant::SchnupperantUser,
|
regular::RegularUser, scheckbuch::ScheckbuchUser, schnupperant::SchnupperantUser,
|
||||||
schnupperinterest::SchnupperInterestUser, unterstuetzend::UnterstuetzendUser,
|
schnupperinterest::SchnupperInterestUser, unterstuetzend::UnterstuetzendUser,
|
||||||
|
AdminUser, AllowedToEditPaymentStatusUser, ManageUserUser, User, UserWithDetails,
|
||||||
|
UserWithMembershipPdf, UserWithRolesAndMembershipPdf, VorstandUser,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
tera::Config,
|
tera::Config,
|
||||||
@ -19,7 +19,6 @@ use crate::{
|
|||||||
use chrono::NaiveDate;
|
use chrono::NaiveDate;
|
||||||
use futures::future::join_all;
|
use futures::future::join_all;
|
||||||
use rocket::{
|
use rocket::{
|
||||||
FromForm, Request, Route, State,
|
|
||||||
form::Form,
|
form::Form,
|
||||||
fs::TempFile,
|
fs::TempFile,
|
||||||
get,
|
get,
|
||||||
@ -27,9 +26,9 @@ use rocket::{
|
|||||||
post,
|
post,
|
||||||
request::{FlashMessage, FromRequest, Outcome},
|
request::{FlashMessage, FromRequest, Outcome},
|
||||||
response::{Flash, Redirect},
|
response::{Flash, Redirect},
|
||||||
routes,
|
routes, FromForm, Request, Route, State,
|
||||||
};
|
};
|
||||||
use rocket_dyn_templates::{Template, tera::Context};
|
use rocket_dyn_templates::{tera::Context, Template};
|
||||||
use sqlx::SqlitePool;
|
use sqlx::SqlitePool;
|
||||||
|
|
||||||
// Custom request guard to extract the Referer header
|
// Custom request guard to extract the Referer header
|
||||||
@ -350,7 +349,7 @@ async fn add_note(
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
match user.add_note(db, &admin, &user, &data.note).await {
|
match user.add_note(db, &admin, &data.note).await {
|
||||||
Ok(_) => Flash::success(
|
Ok(_) => Flash::success(
|
||||||
Redirect::to(format!("/admin/user/{}", user.id)),
|
Redirect::to(format!("/admin/user/{}", user.id)),
|
||||||
"Notiz hinzugefügt",
|
"Notiz hinzugefügt",
|
||||||
|
Reference in New Issue
Block a user