|
|
@ -199,22 +199,16 @@ pub struct UserJoinResponse {
|
|
|
|
pub user_id: i32,
|
|
|
|
pub user_id: i32,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<LoginResponse> for Oper<Login> {
|
|
|
|
impl Perform for Oper<Login> {
|
|
|
|
|
|
|
|
type Response = LoginResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<LoginResponse, Error> {
|
|
|
|
) -> Result<LoginResponse, Error> {
|
|
|
|
let data: &Login = &self.data;
|
|
|
|
let data: &Login = &self.data;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
// Fetch that username / email
|
|
|
|
// Fetch that username / email
|
|
|
@ -234,22 +228,16 @@ impl Perform<LoginResponse> for Oper<Login> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<LoginResponse> for Oper<Register> {
|
|
|
|
impl Perform for Oper<Register> {
|
|
|
|
|
|
|
|
type Response = LoginResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<LoginResponse, Error> {
|
|
|
|
) -> Result<LoginResponse, Error> {
|
|
|
|
let data: &Register = &self.data;
|
|
|
|
let data: &Register = &self.data;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = &rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_register(&rl.ip, true)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
// Make sure site has open registration
|
|
|
|
// Make sure site has open registration
|
|
|
@ -355,13 +343,6 @@ impl Perform<LoginResponse> for Oper<Register> {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_register(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Return the jwt
|
|
|
|
// Return the jwt
|
|
|
|
Ok(LoginResponse {
|
|
|
|
Ok(LoginResponse {
|
|
|
|
jwt: inserted_user.jwt(),
|
|
|
|
jwt: inserted_user.jwt(),
|
|
|
@ -369,12 +350,13 @@ impl Perform<LoginResponse> for Oper<Register> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<LoginResponse> for Oper<SaveUserSettings> {
|
|
|
|
impl Perform for Oper<SaveUserSettings> {
|
|
|
|
|
|
|
|
type Response = LoginResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<LoginResponse, Error> {
|
|
|
|
) -> Result<LoginResponse, Error> {
|
|
|
|
let data: &SaveUserSettings = &self.data;
|
|
|
|
let data: &SaveUserSettings = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -385,13 +367,6 @@ impl Perform<LoginResponse> for Oper<SaveUserSettings> {
|
|
|
|
|
|
|
|
|
|
|
|
let user_id = claims.id;
|
|
|
|
let user_id = claims.id;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
let read_user = User_::read(&conn, user_id)?;
|
|
|
|
let read_user = User_::read(&conn, user_id)?;
|
|
|
@ -471,22 +446,16 @@ impl Perform<LoginResponse> for Oper<SaveUserSettings> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<GetUserDetailsResponse> for Oper<GetUserDetails> {
|
|
|
|
impl Perform for Oper<GetUserDetails> {
|
|
|
|
|
|
|
|
type Response = GetUserDetailsResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<GetUserDetailsResponse, Error> {
|
|
|
|
) -> Result<GetUserDetailsResponse, Error> {
|
|
|
|
let data: &GetUserDetails = &self.data;
|
|
|
|
let data: &GetUserDetails = &self.data;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
let user_claims: Option<Claims> = match &data.auth {
|
|
|
|
let user_claims: Option<Claims> = match &data.auth {
|
|
|
@ -582,12 +551,13 @@ impl Perform<GetUserDetailsResponse> for Oper<GetUserDetails> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<AddAdminResponse> for Oper<AddAdmin> {
|
|
|
|
impl Perform for Oper<AddAdmin> {
|
|
|
|
|
|
|
|
type Response = AddAdminResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
websocket_info: Option<WebsocketInfo>,
|
|
|
|
websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<AddAdminResponse, Error> {
|
|
|
|
) -> Result<AddAdminResponse, Error> {
|
|
|
|
let data: &AddAdmin = &self.data;
|
|
|
|
let data: &AddAdmin = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -598,13 +568,6 @@ impl Perform<AddAdminResponse> for Oper<AddAdmin> {
|
|
|
|
|
|
|
|
|
|
|
|
let user_id = claims.id;
|
|
|
|
let user_id = claims.id;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
// Make sure user is an admin
|
|
|
|
// Make sure user is an admin
|
|
|
@ -669,12 +632,13 @@ impl Perform<AddAdminResponse> for Oper<AddAdmin> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<BanUserResponse> for Oper<BanUser> {
|
|
|
|
impl Perform for Oper<BanUser> {
|
|
|
|
|
|
|
|
type Response = BanUserResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
websocket_info: Option<WebsocketInfo>,
|
|
|
|
websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<BanUserResponse, Error> {
|
|
|
|
) -> Result<BanUserResponse, Error> {
|
|
|
|
let data: &BanUser = &self.data;
|
|
|
|
let data: &BanUser = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -685,13 +649,6 @@ impl Perform<BanUserResponse> for Oper<BanUser> {
|
|
|
|
|
|
|
|
|
|
|
|
let user_id = claims.id;
|
|
|
|
let user_id = claims.id;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
// Make sure user is an admin
|
|
|
|
// Make sure user is an admin
|
|
|
@ -762,12 +719,13 @@ impl Perform<BanUserResponse> for Oper<BanUser> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<GetRepliesResponse> for Oper<GetReplies> {
|
|
|
|
impl Perform for Oper<GetReplies> {
|
|
|
|
|
|
|
|
type Response = GetRepliesResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<GetRepliesResponse, Error> {
|
|
|
|
) -> Result<GetRepliesResponse, Error> {
|
|
|
|
let data: &GetReplies = &self.data;
|
|
|
|
let data: &GetReplies = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -780,13 +738,6 @@ impl Perform<GetRepliesResponse> for Oper<GetReplies> {
|
|
|
|
|
|
|
|
|
|
|
|
let sort = SortType::from_str(&data.sort)?;
|
|
|
|
let sort = SortType::from_str(&data.sort)?;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
let replies = ReplyQueryBuilder::create(&conn, user_id)
|
|
|
|
let replies = ReplyQueryBuilder::create(&conn, user_id)
|
|
|
@ -800,12 +751,13 @@ impl Perform<GetRepliesResponse> for Oper<GetReplies> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<GetUserMentionsResponse> for Oper<GetUserMentions> {
|
|
|
|
impl Perform for Oper<GetUserMentions> {
|
|
|
|
|
|
|
|
type Response = GetUserMentionsResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<GetUserMentionsResponse, Error> {
|
|
|
|
) -> Result<GetUserMentionsResponse, Error> {
|
|
|
|
let data: &GetUserMentions = &self.data;
|
|
|
|
let data: &GetUserMentions = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -818,13 +770,6 @@ impl Perform<GetUserMentionsResponse> for Oper<GetUserMentions> {
|
|
|
|
|
|
|
|
|
|
|
|
let sort = SortType::from_str(&data.sort)?;
|
|
|
|
let sort = SortType::from_str(&data.sort)?;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
let mentions = UserMentionQueryBuilder::create(&conn, user_id)
|
|
|
|
let mentions = UserMentionQueryBuilder::create(&conn, user_id)
|
|
|
@ -838,12 +783,13 @@ impl Perform<GetUserMentionsResponse> for Oper<GetUserMentions> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<UserMentionResponse> for Oper<EditUserMention> {
|
|
|
|
impl Perform for Oper<EditUserMention> {
|
|
|
|
|
|
|
|
type Response = UserMentionResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<UserMentionResponse, Error> {
|
|
|
|
) -> Result<UserMentionResponse, Error> {
|
|
|
|
let data: &EditUserMention = &self.data;
|
|
|
|
let data: &EditUserMention = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -854,13 +800,6 @@ impl Perform<UserMentionResponse> for Oper<EditUserMention> {
|
|
|
|
|
|
|
|
|
|
|
|
let user_id = claims.id;
|
|
|
|
let user_id = claims.id;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
let user_mention = UserMention::read(&conn, data.user_mention_id)?;
|
|
|
|
let user_mention = UserMention::read(&conn, data.user_mention_id)?;
|
|
|
@ -885,12 +824,13 @@ impl Perform<UserMentionResponse> for Oper<EditUserMention> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<GetRepliesResponse> for Oper<MarkAllAsRead> {
|
|
|
|
impl Perform for Oper<MarkAllAsRead> {
|
|
|
|
|
|
|
|
type Response = GetRepliesResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<GetRepliesResponse, Error> {
|
|
|
|
) -> Result<GetRepliesResponse, Error> {
|
|
|
|
let data: &MarkAllAsRead = &self.data;
|
|
|
|
let data: &MarkAllAsRead = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -901,13 +841,6 @@ impl Perform<GetRepliesResponse> for Oper<MarkAllAsRead> {
|
|
|
|
|
|
|
|
|
|
|
|
let user_id = claims.id;
|
|
|
|
let user_id = claims.id;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
let replies = ReplyQueryBuilder::create(&conn, user_id)
|
|
|
|
let replies = ReplyQueryBuilder::create(&conn, user_id)
|
|
|
@ -983,12 +916,13 @@ impl Perform<GetRepliesResponse> for Oper<MarkAllAsRead> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<LoginResponse> for Oper<DeleteAccount> {
|
|
|
|
impl Perform for Oper<DeleteAccount> {
|
|
|
|
|
|
|
|
type Response = LoginResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<LoginResponse, Error> {
|
|
|
|
) -> Result<LoginResponse, Error> {
|
|
|
|
let data: &DeleteAccount = &self.data;
|
|
|
|
let data: &DeleteAccount = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -999,13 +933,6 @@ impl Perform<LoginResponse> for Oper<DeleteAccount> {
|
|
|
|
|
|
|
|
|
|
|
|
let user_id = claims.id;
|
|
|
|
let user_id = claims.id;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
let user: User_ = User_::read(&conn, user_id)?;
|
|
|
|
let user: User_ = User_::read(&conn, user_id)?;
|
|
|
@ -1078,22 +1005,16 @@ impl Perform<LoginResponse> for Oper<DeleteAccount> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<PasswordResetResponse> for Oper<PasswordReset> {
|
|
|
|
impl Perform for Oper<PasswordReset> {
|
|
|
|
|
|
|
|
type Response = PasswordResetResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<PasswordResetResponse, Error> {
|
|
|
|
) -> Result<PasswordResetResponse, Error> {
|
|
|
|
let data: &PasswordReset = &self.data;
|
|
|
|
let data: &PasswordReset = &self.data;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
// Fetch that email
|
|
|
|
// Fetch that email
|
|
|
@ -1123,22 +1044,16 @@ impl Perform<PasswordResetResponse> for Oper<PasswordReset> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<LoginResponse> for Oper<PasswordChange> {
|
|
|
|
impl Perform for Oper<PasswordChange> {
|
|
|
|
|
|
|
|
type Response = LoginResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<LoginResponse, Error> {
|
|
|
|
) -> Result<LoginResponse, Error> {
|
|
|
|
let data: &PasswordChange = &self.data;
|
|
|
|
let data: &PasswordChange = &self.data;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
// Fetch the user_id from the token
|
|
|
|
// Fetch the user_id from the token
|
|
|
@ -1162,12 +1077,13 @@ impl Perform<LoginResponse> for Oper<PasswordChange> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<PrivateMessageResponse> for Oper<CreatePrivateMessage> {
|
|
|
|
impl Perform for Oper<CreatePrivateMessage> {
|
|
|
|
|
|
|
|
type Response = PrivateMessageResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
websocket_info: Option<WebsocketInfo>,
|
|
|
|
websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<PrivateMessageResponse, Error> {
|
|
|
|
) -> Result<PrivateMessageResponse, Error> {
|
|
|
|
let data: &CreatePrivateMessage = &self.data;
|
|
|
|
let data: &CreatePrivateMessage = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -1180,13 +1096,6 @@ impl Perform<PrivateMessageResponse> for Oper<CreatePrivateMessage> {
|
|
|
|
|
|
|
|
|
|
|
|
let hostname = &format!("https://{}", Settings::get().hostname);
|
|
|
|
let hostname = &format!("https://{}", Settings::get().hostname);
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
// Check for a site ban
|
|
|
|
// Check for a site ban
|
|
|
@ -1249,12 +1158,13 @@ impl Perform<PrivateMessageResponse> for Oper<CreatePrivateMessage> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<PrivateMessageResponse> for Oper<EditPrivateMessage> {
|
|
|
|
impl Perform for Oper<EditPrivateMessage> {
|
|
|
|
|
|
|
|
type Response = PrivateMessageResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<PrivateMessageResponse, Error> {
|
|
|
|
) -> Result<PrivateMessageResponse, Error> {
|
|
|
|
let data: &EditPrivateMessage = &self.data;
|
|
|
|
let data: &EditPrivateMessage = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -1265,13 +1175,6 @@ impl Perform<PrivateMessageResponse> for Oper<EditPrivateMessage> {
|
|
|
|
|
|
|
|
|
|
|
|
let user_id = claims.id;
|
|
|
|
let user_id = claims.id;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
let orig_private_message = PrivateMessage::read(&conn, data.edit_id)?;
|
|
|
|
let orig_private_message = PrivateMessage::read(&conn, data.edit_id)?;
|
|
|
@ -1318,12 +1221,13 @@ impl Perform<PrivateMessageResponse> for Oper<EditPrivateMessage> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<PrivateMessagesResponse> for Oper<GetPrivateMessages> {
|
|
|
|
impl Perform for Oper<GetPrivateMessages> {
|
|
|
|
|
|
|
|
type Response = PrivateMessagesResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
_websocket_info: Option<WebsocketInfo>,
|
|
|
|
rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<PrivateMessagesResponse, Error> {
|
|
|
|
) -> Result<PrivateMessagesResponse, Error> {
|
|
|
|
let data: &GetPrivateMessages = &self.data;
|
|
|
|
let data: &GetPrivateMessages = &self.data;
|
|
|
|
|
|
|
|
|
|
|
@ -1334,13 +1238,6 @@ impl Perform<PrivateMessagesResponse> for Oper<GetPrivateMessages> {
|
|
|
|
|
|
|
|
|
|
|
|
let user_id = claims.id;
|
|
|
|
let user_id = claims.id;
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(rl) = rate_limit_info {
|
|
|
|
|
|
|
|
rl.rate_limiter
|
|
|
|
|
|
|
|
.lock()
|
|
|
|
|
|
|
|
.unwrap()
|
|
|
|
|
|
|
|
.check_rate_limit_message(&rl.ip, false)?;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let conn = pool.get()?;
|
|
|
|
let conn = pool.get()?;
|
|
|
|
|
|
|
|
|
|
|
|
let messages = PrivateMessageQueryBuilder::create(&conn, user_id)
|
|
|
|
let messages = PrivateMessageQueryBuilder::create(&conn, user_id)
|
|
|
@ -1353,12 +1250,13 @@ impl Perform<PrivateMessagesResponse> for Oper<GetPrivateMessages> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
impl Perform<UserJoinResponse> for Oper<UserJoin> {
|
|
|
|
impl Perform for Oper<UserJoin> {
|
|
|
|
|
|
|
|
type Response = UserJoinResponse;
|
|
|
|
|
|
|
|
|
|
|
|
fn perform(
|
|
|
|
fn perform(
|
|
|
|
&self,
|
|
|
|
&self,
|
|
|
|
_pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
_pool: Pool<ConnectionManager<PgConnection>>,
|
|
|
|
websocket_info: Option<WebsocketInfo>,
|
|
|
|
websocket_info: Option<WebsocketInfo>,
|
|
|
|
_rate_limit_info: Option<RateLimitInfo>,
|
|
|
|
|
|
|
|
) -> Result<UserJoinResponse, Error> {
|
|
|
|
) -> Result<UserJoinResponse, Error> {
|
|
|
|
let data: &UserJoin = &self.data;
|
|
|
|
let data: &UserJoin = &self.data;
|
|
|
|
|
|
|
|
|
|
|
|