Commit graph

782 commits

Author SHA1 Message Date
Alex Gleason 20d24741af
AdminAPI: Add PATCH /api/pleroma/admin/users/approve endpoint 2020-07-14 18:02:44 -05:00
Alex Gleason 5ddf0415c4
Accept reason in POST /api/v1/accounts and store in DB 2020-07-14 00:22:12 -05:00
feld 8f9ee694ed Merge branch 'features/profile-fields-emojo' into 'develop'
user: Add support for custom emojis in profile fields

See merge request pleroma/pleroma!2741
2020-07-13 15:43:46 +00:00
Alex Gleason bcfd38c8f3
Make a user unapproved when registering with account_approval_required on 2020-07-12 22:55:37 -05:00
Alex Gleason a62f17da17
Add approval_pending field to User 2020-07-12 20:27:14 -05:00
Maksim Pechnikov 62fc8eab0d fix reset confirmation email in admin section 2020-07-11 07:20:35 +03:00
lain b39eb6ecc5 Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into chat-federation-information 2020-07-10 12:26:53 +02:00
Haelwenn (lanodan) Monnier cc7153cd82
user: Add support for custom emojis in profile fields 2020-07-09 19:21:58 +02:00
Mark Felder d23804f191 Use the Pleroma.Config alias 2020-07-09 10:53:51 -05:00
lain 00e54f8fe7 ActivityPub: Remove follow and fix issues. 2020-07-08 17:07:24 +02:00
lain 59cf78e412 AccountController: Allow removal / reset of user images. 2020-07-07 16:53:03 +02:00
lain e3b5559780 AccountController: Make setting accepts_chat_messages possible. 2020-07-03 15:54:25 +02:00
lain 5c0bf4c472 ActivityPub: Ingest information about chat acceptance. 2020-07-03 13:58:34 +02:00
lain 37fdb05058 User, Migration: Change accepts_chat_messages to be nullable
This is to model the ambiguous state of most users.
2020-07-03 13:12:23 +02:00
lain 98bfdba108 User: On registration, set accepts_chat_messages to true. 2020-07-03 12:47:05 +02:00
Mark Felder d69af7f742 Rename user.settings column
This is used exclusively by MastoFE/GlitchFE now
2020-06-30 11:50:53 -05:00
lain 15a8b70318 User: Don't unfollow on block when the relevant setting is set. 2020-06-26 12:06:00 +02:00
lain 44bb7cfccd ActivityPub: Remove block. 2020-06-25 11:51:33 +02:00
lain 59bdef0c33 Merge branch 'feature/1739-account-endpoints' into 'develop'
account visibility in masto api

Closes #1739

See merge request pleroma/pleroma!2488
2020-06-22 12:37:10 +00:00
Sergey Suprunenko b63646169d
Add support for bot field in update_credentials 2020-06-19 21:18:07 +02:00
lain 372533b7c3 Merge branch 'dry-up-follower-update' into 'develop'
User: update_follower_count refactor.

See merge request pleroma/pleroma!2649
2020-06-19 13:40:34 +00:00
lain d772361e62 Merge branch 'fix/1787-mogrify-args' into 'develop'
Moving custom ecto types in context folders

See merge request pleroma/pleroma!2652
2020-06-17 15:53:24 +00:00
rinpatch 4ec2fb967e Merge branch 'features/users-raw_bio' into 'develop'
User: Add raw_bio, storing unformatted bio

See merge request pleroma/pleroma!2326
2020-06-17 10:34:23 +00:00
Alexander Strizhakov 3c2cee33ad
moving custom ecto types in context folders 2020-06-16 17:50:33 +03:00
lain e1ee8bc1da User: update_follower_count refactor. 2020-06-15 14:29:34 +02:00
eugenijm b15cfc3d36 Mastodon API: ensure the notification endpoint doesn't return less than the requested amount of records unless it's the last page 2020-06-14 18:27:11 +03:00
Sergey Suprunenko 8d9e586887
Delete pending follow requests on user deletion 2020-06-07 17:31:37 +02:00
Haelwenn (lanodan) Monnier e1b07402ab
User: Add raw_bio, storing unformatted bio
Related: https://git.pleroma.social/pleroma/pleroma/issues/1643
2020-06-06 16:23:16 +02:00
lain f6ddf0cc50 Merge branch 'feature/1792-update-actor-type' into 'develop'
Validate actor type

See merge request pleroma/pleroma!2593
2020-05-28 16:58:28 +00:00
rinpatch d35be02e70 Merge branch 'refactor-add-mention-step-one' into 'develop'
Fix ObjectView calling into strange functions

Closes #1807

See merge request pleroma/pleroma!2580
2020-05-27 14:17:12 +00:00
Alexander Strizhakov 3249141588
validate actor type 2020-05-27 10:14:22 +03:00
lain 5fef405208 User: Change signature of get_users_from_set 2020-05-25 15:06:35 +02:00
lain d0c26956da User: Don't error out if we want to refresh a user but can't 2020-05-25 12:46:14 +02:00
lain ab1154e13f Merge branch 'admin-logo-upload' into 'develop'
Ability to upload background, logo, default user avatar, instance thumbnail, and the NSFW hiding image

See merge request pleroma/pleroma!2388
2020-05-21 14:30:34 +00:00
lain 283fb1e05b Merge branch 'issue/749' into 'develop'
[#749] unsubscribes of friends when user deactivated

See merge request pleroma/pleroma!2513
2020-05-21 13:27:44 +00:00
eugenijm b7fc61e17b Added the ability to upload background, logo, default user avatar, instance thumbnail, and the NSFW hiding image via AdminFE 2020-05-21 04:41:42 +03:00
lain 423ea497bb Merge branch 'feature/1734-user-deletion' into 'develop'
User deletion

Closes #1734

See merge request pleroma/pleroma!2493
2020-05-20 11:43:49 +00:00
lain a985bd57b4 User.Query: Speed up recipients query. 2020-05-19 14:11:32 +02:00
Alexander Strizhakov 1671864d88
return :visible instead of boolean 2020-05-18 10:34:50 +03:00
Alexander Strizhakov e7bc2f980c
account visibility 2020-05-18 10:34:49 +03:00
Alex Gleason b46811a074
Upgrade Comeonin to v5
https://github.com/riverrun/comeonin/blob/master/UPGRADE_v5.md
2020-05-12 17:14:59 -05:00
Maksim Pechnikov 63477d07ad unsubscribes of friends when user deactivated 2020-05-12 08:14:42 +03:00
lain 5367a00257 Deletion: Handle the case of pruned objects. 2020-05-11 15:06:23 +02:00
Alexander Strizhakov 287f781808
user deletion 2020-05-08 17:11:17 +03:00
lain 788b7e7bbd Merge fixes. 2020-05-07 14:52:37 +02:00
lain f0c22df226 Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into feature/undo-validator-reduced 2020-05-07 14:45:20 +02:00
Maksim 3d0c567fbc Pleroma.Web.TwitterAPI.TwoFactorAuthenticationController -> Pleroma.Web.PleromaAPI.TwoFactorAuthenticationController 2020-05-07 08:14:54 +00:00
rinpatch 473b0d9f3d Merge branch 'feature/delete-validator' into 'develop'
Move deletions to the common pipeline

Closes #1497

See merge request pleroma/pleroma!2441
2020-05-06 14:32:58 +00:00
lain a3bb2e5474 Undoing: Move undoing announcements to the pipeline everywhere. 2020-05-05 16:42:34 +02:00
lain a3071f0231 Undoing: Move undoing likes to the pipeline everywhere. 2020-05-05 15:08:41 +02:00
lain 8bed6ea922 User, Webfinger: Remove OStatus vestiges
Mainly the `magic_key` field
2020-05-05 09:25:09 +02:00
lain 6fb96f64c1 Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into feature/delete-validator 2020-05-03 12:55:29 +02:00
rinpatch e55876409b Deactivate local users on deletion instead of deleting the record
Prevents the possibility of re-registration, which allowed to read
DMs of the deleted account.

Also includes a migration that tries to find any already deleted
accounts and insert skeletons for them.

Closes pleroma/pleroma#1687
2020-05-02 19:05:13 +03:00
lain 3b443cbc1d User: Use common pipeline to delete user activities 2020-04-30 20:08:25 +02:00
Alexander 6e625a427c
reply filtering 2020-04-24 15:43:49 +03:00
lain 7a3a88a13e Streamer: Stream boosts to the boosting user. 2020-04-22 17:21:13 +02:00
Ivan Tashkinov 6e6f95c6ae Merge remote-tracking branch 'remotes/origin/develop' into 1559-follow-request-notifications
# Conflicts:
#	CHANGELOG.md
2020-04-17 16:23:58 +03:00
rinpatch 942d7467ca Merge branch 'develop' into features/remove-user-source_data 2020-04-16 21:28:52 +03:00
rinpatch 252528a4b9 Merge branch 'refactor/remove-upgrade-changeset' into 'develop'
Remove User.upgrade_changeset in favor of remote_user_creation

See merge request pleroma/pleroma!2368
2020-04-16 14:59:11 +00:00
rinpatch 77ee64b993 user: remove blank? 2020-04-16 17:54:57 +03:00
rinpatch 5e365448f3 Merge branch 'following-relationships-optimizations' into 'develop'
FollowingRelationship storage & performance optimizations

See merge request pleroma/pleroma!2332
2020-04-11 19:46:04 +00:00
rinpatch c077ad0b33 Remove User.upgrade_changeset in favor of remote_user_creation
The two changesets had the same purpose, yet some changes were updated
in one, but not the other (`uri`, for example).

Also makes `Transmogrifier.upgrade_user_from_ap_id` be called from
`ActivityPub.make_user_from_ap_id` only when the user is actually
not AP enabled yet.

I did not bother rewriting tests that used `User.insert_or_update`
to use the changeset instead because they seemed to just test the implementation,
rather than behavior.
2020-04-11 22:31:46 +03:00
Haelwenn (lanodan) Monnier e89078ac2a
User: remove source_data 2020-04-10 06:20:03 +02:00
Haelwenn (lanodan) Monnier 3420dec494
Remove User.fields/1 2020-04-10 06:20:02 +02:00
Haelwenn (lanodan) Monnier 9172d719cc
profile emojis in User.emoji instead of source_data 2020-04-10 06:20:02 +02:00
Haelwenn (lanodan) Monnier 62656ab259
User: Move inbox & shared_inbox to own fields 2020-04-10 06:20:02 +02:00
Haelwenn (lanodan) Monnier b6bed1a284
Types.URI: New 2020-04-10 06:20:02 +02:00
Haelwenn (lanodan) Monnier 19eedb3d04
User: Move public_key from source_data to own field 2020-04-10 06:16:18 +02:00
Haelwenn (lanodan) Monnier 5628984df4
User: remove source_data use for follower_address and following_address 2020-04-10 06:16:18 +02:00
Ivan Tashkinov 1a4875adfa [#1559] Support for "follow_request" notifications (configurable).
(Not currently supported by PleromaFE, thus disabled by default).
2020-04-07 21:52:32 +03:00
rinpatch dd4d10b275 Merge branch 'fix-auto-link-for-profile-fields' into 'develop'
Use Pleroma.Formatter.linkify/2 instead

See merge request pleroma/pleroma!2352
2020-04-07 11:41:10 +00:00
Haelwenn (lanodan) Monnier 185520d1b4
Provide known-good user.uri, remove User.profile_url/1 2020-03-31 23:55:29 +02:00
Haelwenn (lanodan) Monnier b30fb1f3bb
User: Fix use of source_data in profile_url/1 2020-03-31 23:54:20 +02:00
kPherox 7408f003a6
Use Pleroma.Formatter.linkify instead of AutoLinker.link 2020-04-01 02:52:30 +09:00
kPherox d191b0942f
Remove no longer used function 2020-03-31 22:50:18 +09:00
Ivan Tashkinov ea9c57b26e [#2332] Misc. improvements per code change requests. 2020-03-31 09:21:42 +03:00
Ivan Tashkinov be9d18461a FollowingRelationship storage & performance optimizations (state turned ecto_enum-driven integer, reorganized indices etc.). 2020-03-28 18:49:03 +03:00
Ivan Tashkinov 112101ca52 Merge remote-tracking branch 'remotes/origin/develop' into relations-preloading-for-statuses-rendering
# Conflicts:
#	lib/pleroma/thread_mute.ex
2020-03-26 09:43:58 +03:00
Ivan Tashkinov 460e41585c Further preloading (more endpoints), refactoring, tests. 2020-03-25 20:33:34 +03:00
Ivan Tashkinov be5e2c4dbb Applied relationships preloading to GET /api/v1/accounts/relationships. Refactoring (User.binary_id/1). 2020-03-25 17:01:45 +03:00
Ivan Tashkinov 012d428e1f Merge remote-tracking branch 'remotes/origin/develop' into 1364-notifications-sending-control 2020-03-25 09:05:17 +03:00
Ivan Tashkinov e743c22329 Fixed incorrect usage of "relations" as a short form of "relationships". 2020-03-25 09:04:00 +03:00
Ivan Tashkinov 8f1d622b8d Merge remote-tracking branch 'remotes/origin/develop' into relations-preloading-for-statuses-rendering 2020-03-24 22:15:37 +03:00
lain 1d75d0ed7a Merge branch 'admin-api-change-password' into 'develop'
Admin API: `PATCH /api/pleroma/admin/users/:nickname/update_credentials`

See merge request pleroma/pleroma!2149
2020-03-24 17:34:13 +00:00
Ivan Tashkinov 3c78e5f327 Preloading of follow relations for timeline/statuses rendering (performance improvement). Refactoring. 2020-03-23 12:01:11 +03:00
Ivan Tashkinov c2e415143b WIP: preloading of user relations for timeline/statuses rendering (performance improvement). 2020-03-22 21:51:44 +03:00
rinpatch 981e015f1b Mastodon API Account view: Remove an outdated hack
The hack with caching the follow relationship was introduced
when we still were storing it inside the follow activity, resulting in
slow queries. Now we store follow state in `FollowRelationship` table,
so this is no longer necessary.
2020-03-22 17:10:37 +03:00
Alexander Strizhakov fe15f0ba15
restrict_unauthenticated setting 2020-03-20 16:36:20 +03:00
eugenijm 13cce9c0de Admin API: PATCH /api/pleroma/admin/users/:nickname/credentials, GET /api/pleroma/admin/users/:nickname/credentials. 2020-03-16 20:42:37 +03:00
Ivan Tashkinov 0e07c5ef57 Merge remote-tracking branch 'remotes/origin/develop' into 1364-notifications-sending-control 2020-03-16 17:58:42 +03:00
Haelwenn (lanodan) Monnier 8176ca9e40 static_fe: Sanitize HTML in users 2020-03-15 20:44:04 +01:00
Ivan Tashkinov 7c8003c3fc [#1364] Improved control over generation / sending of notifications. Fixed blocking / muting users notifications issue. Added tests. 2020-03-15 21:00:12 +03:00
rinpatch e87a32bcd7 rip out fetch_initial_posts
Every time someone tries to use it, it goes mad and tries to scrape the
entire fediverse for no visible reason, it's better to just remove it
than continue shipping it in it's current state.

idea acked by lain and feld on irc

Closes #1595 #1422
2020-03-15 15:59:17 +03:00
Egor Kislitsyn 4a45b96a91
Merge branch 'develop' into fix/signup-without-email 2020-03-02 15:35:49 +04:00
Haelwenn 764a50f8a6 Merge branch 'feature/1482-activity_pub_transactions' into 'develop'
ActivityPub actions & side-effects in transaction

Closes #1482

See merge request pleroma/pleroma!2089
2020-03-02 07:58:01 +00:00
Haelwenn (lanodan) Monnier 6da6540036
Bump copyright years of files changed after 2020-01-07
Done via the following command:
git diff fcd5dd259a --stat --name-only | xargs sed -i '/Pleroma Authors/c# Copyright © 2017-2020 Pleroma Authors <https:\/\/pleroma.social\/>'
2020-03-02 06:08:45 +01:00
Alexander Strizhakov 32d1e04817
ActivityPub actions & side-effects in transaction 2020-03-01 12:01:39 +03:00
Egor Kislitsyn f446744a6a
Allow account registration without an email 2020-02-26 20:13:53 +04:00
Egor Kislitsyn 22018adae6
Fix Dialyzer warnings 2020-02-25 18:34:56 +04:00
Egor Kislitsyn bc2e98b200
Add User.get_follow_state/2 2020-02-07 16:17:34 +04:00
Egor Kislitsyn 8c71f7e11a Add support for cancellation of a follow request 2020-02-05 20:22:15 +04:00
Maksim Pechnikov 02c3dd2e3d update ecto 2020-01-28 10:43:47 +03:00
Maksim Pechnikov 108a39c876 updated error messages for authentication process 2020-01-17 15:01:37 +03:00
Ivan Tashkinov 39ce894a07 Merge remote-tracking branch 'remotes/origin/develop' into 1478-oauth-admin-scopes-tweaks
# Conflicts:
#	lib/pleroma/user.ex
2020-01-10 16:18:32 +03:00
lain 05ca420c09 Merge branch 'issue/1490' into 'develop'
[#1490] fixed create  service user   (relay, internal.fetch)

See merge request pleroma/pleroma!2092
2020-01-10 13:14:20 +00:00
Ivan Tashkinov 6c94b7498b [#1478] OAuth admin tweaks: enforced OAuth admin scopes usage by default, migrated existing OAuth records. Adjusted tests. 2020-01-10 10:52:21 +03:00
Maksim Pechnikov 70410dfafd fix create service actor 2020-01-08 16:40:49 +03:00
Ivan Tashkinov 7973cbdb9f OAuthScopesPlug: disallowed nil token (unless with :fallback option). WIP: controller tests modification: OAuth scopes usage. 2019-12-15 22:32:42 +03:00
Sadposter 457821adb0 Apply suggestion to lib/pleroma/user.ex 2019-12-10 18:49:41 +00:00
Sadposter 8cfaab8f04 Merge branch 'develop' into 'domain-block-precedence'
# Conflicts:
#   lib/pleroma/user.ex
2019-12-10 16:54:25 +00:00
Sadposter 19d228cc58 modify SQL to include followed-but-domain-blocked activities 2019-12-10 16:40:12 +00:00
lain 1ae976ac51 Merge branch 'develop' into '1427-oauth-admin-scopes'
# Conflicts:
#   CHANGELOG.md
2019-12-10 13:34:54 +00:00
Hakaba Hitoyo 701815e64c [ActivityPub] Configurable ActivityPub actor type 2019-12-10 13:19:26 +00:00
Ivan Tashkinov 835ac2157c Merge remote-tracking branch 'remotes/upstream/develop' into 1427-oauth-admin-scopes
# Conflicts:
#	CHANGELOG.md
2019-12-10 08:55:14 +03:00
Maksim Pechnikov 95e6a2acd9 Merge branch 'develop' into issue/1342 2019-12-08 21:25:26 +03:00
Ivan Tashkinov 1770602747 [#1427] Extra check that admin OAuth scope is used by admin. Adjusted tests. 2019-12-07 17:49:53 +03:00
Ivan Tashkinov 13926537b6 Merge remote-tracking branch 'remotes/origin/develop' into 1427-oauth-admin-scopes 2019-12-06 00:26:31 +03:00
Ivan Tashkinov af42c00cff [#1427] Reworked admin scopes support.
Requalified users.is_admin flag as legacy accessor to admin actions in case token lacks admin scope(s).
2019-12-06 00:25:44 +03:00
Maksim Pechnikov 3fe7a1fd35 Merge branch 'develop' into issue/1342 2019-12-05 15:46:27 +03:00
Ivan Tashkinov d3bce89edd [#1335] Merge issue fix. 2019-12-04 19:41:14 +03:00
Ivan Tashkinov 30caf3e51e Merge remote-tracking branch 'remotes/upstream/develop' into 1335-user-api-id-fields-relations
# Conflicts:
#	lib/pleroma/user.ex
2019-12-04 18:56:31 +03:00
lain 7722e5a67a Merge branch 'feature/move-activity' into 'develop'
Support "Move" activity

Closes #1316

See merge request pleroma/pleroma!1883
2019-12-02 16:26:19 +00:00
rinpatch 0d24ab04c5 Merge branch 'remove-info-from-users' into 'develop'
Removed users.info field

See merge request pleroma/pleroma!2006
2019-11-30 10:42:51 +00:00
Ivan Tashkinov 52cc7de82c Merge remote-tracking branch 'remotes/upstream/develop' into 1335-user-api-id-fields-relations
# Conflicts:
#	mix.lock
2019-11-29 10:17:59 +03:00
Maksim Pechnikov a52da55eb9 added User.NotificationSetting struct 2019-11-28 22:08:30 +03:00
Sadposter c7cc80a9ee obligatory format commit 2019-11-28 10:40:50 +00:00
Sadposter fa97eddf8a make follows take precedence over domain blocks 2019-11-28 10:38:38 +00:00
Egor Kislitsyn f595cfe623
Remove User.user_info/2 2019-11-27 19:43:47 +07:00
Ivan Tashkinov c8d3c3bfec Merge remote-tracking branch 'remotes/upstream/develop' into 1335-user-api-id-fields-relations
# Conflicts:
#	lib/pleroma/web/activity_pub/activity_pub.ex
2019-11-26 10:42:36 +03:00
Ivan Tashkinov 1636cc5b7e Removed users.info and remaining usages. 2019-11-23 14:06:19 +03:00
lain bd62946020 Merge branch 'feature/confirm-user-acc-resend-confirmation' into 'develop'
AdminAPI: Confirm user account, resend confirmation email

See merge request pleroma/pleroma!1994
2019-11-22 15:39:19 +00:00
Maxim Filippov b64c7b35d4 Swap map with each 2019-11-22 09:11:36 +09:00
Ivan Tashkinov cad9b325e5 Merge remote-tracking branch 'remotes/upstream/develop' into 1335-user-api-id-fields-relations
# Conflicts:
#	lib/pleroma/user/search.ex
#	test/user_test.exs
2019-11-21 16:47:52 +03:00
lain 8feb5dcb42 Merge branch 'issue/1348' into 'develop'
[#1348] excluded invisible actors from gets  /api/v1/accounts/:id

See merge request pleroma/pleroma!1937
2019-11-21 13:13:14 +00:00
Egor Kislitsyn d38ab4bb89
Fix user.following_count 2019-11-21 16:31:13 +07:00
Ivan Tashkinov de892d2fe1 [#1335] Reorganized users.subscribers as UserRelationship. Added tests for UserRelationship-related functionality. 2019-11-20 15:46:11 +03:00
Ivan Tashkinov 555edd01ab [#1335] User AP ID relations fetching performance optimizations. 2019-11-20 12:19:07 +03:00
Ivan Tashkinov ba5cc30165 [#1335] Implemented notification mutes and reblog mutes as UserRelationships. User to UserRelationship relations and functions refactoring. 2019-11-19 23:22:10 +03:00
Maxim Filippov 46eb160135 AdminAPI: Confirm user account, resend confirmation email 2019-11-19 20:14:02 +09:00
Ivan Tashkinov aad6576130 [#1335] Refactored UserMute and UserBlock into UserRelationship, introduced EctoEnum. 2019-11-18 20:38:56 +03:00
Ivan Tashkinov 01d9c093c3 Merge remote-tracking branch 'remotes/upstream/develop' into 1335-user-api-id-fields-relations 2019-11-15 21:40:14 +03:00
Ivan Tashkinov c31ddce51e [#1335] Reorganized users.mutes as relation to UserMute entity. 2019-11-15 21:38:54 +03:00
Egor Kislitsyn 3c0abfca53
Merge remote-tracking branch 'upstream/develop' into feature/move-activity 2019-11-14 16:39:45 +07:00
Egor Kislitsyn e6d7e27bd6
Add allow_following_move setting to User 2019-11-12 18:45:28 +07:00
lain 8521553ad9 User: Don't let deactivated users authenticate. 2019-11-11 12:37:38 +01:00
Ivan Tashkinov 5cf2c7422b [#1335] Applied code review suggestions. 2019-11-11 14:16:57 +03:00
Ivan Tashkinov 3db988250b [#1335] User: refactored :blocks field into :blocked_users relation.
Introduced UserBlock.
2019-11-10 16:30:21 +03:00
Maksim Pechnikov 4b7c11e3f9 excluded invisible actors from gets /api/v1/accounts/:id 2019-11-04 20:44:24 +03:00
lain 0c31258616 User: Don't pull remote users follower count immediately after deactivating.
The other instance doesn't necessarily know that anything changed yet, and it
will be fixed up at the next user pull anyway.

Closes #1369
2019-11-04 14:36:54 +01:00
Egor Kislitsyn 4270861085
Merge branch 'develop' into feature/move-activity 2019-10-28 15:10:47 +07:00