Add adult verification and erotic moderation features: Implement new routes and controller methods for managing adult verification requests, status updates, and document retrieval. Introduce erotic moderation actions and reports, enhancing administrative capabilities. Update chat and navigation controllers to support adult content filtering and access control. Enhance user parameter handling for adult verification status and requests, improving overall user experience and compliance.

This commit is contained in:
Torsten Schulz (local)
2026-03-27 09:14:54 +01:00
parent f93687c753
commit 3e6c09ab29
73 changed files with 4459 additions and 197 deletions

View File

@@ -30,6 +30,86 @@
"actions": "Actions",
"search": "Search"
},
"adultVerification": {
"title": "[Admin] - Erotic approvals",
"intro": "Adult users can request access to the erotic area. Requests can be reviewed, approved or rejected here.",
"username": "User",
"age": "Age",
"statusLabel": "Status",
"requestLabel": "Proof",
"actions": "Actions",
"approve": "Approve",
"reject": "Reject",
"resetPending": "Set pending",
"openDocument": "Open document",
"empty": "No matching requests found.",
"loadError": "Could not load approvals.",
"updateError": "Could not update the status.",
"documentError": "Could not open the document.",
"filters": {
"pending": "Pending",
"approved": "Approved",
"rejected": "Rejected",
"all": "All"
},
"status": {
"none": "Not requested",
"pending": "Pending",
"approved": "Approved",
"rejected": "Rejected"
},
"messages": {
"approved": "Approval granted.",
"rejected": "Approval rejected.",
"pending": "Request set back to pending."
}
},
"eroticModeration": {
"title": "[Admin] - Erotic moderation",
"intro": "Reported erotic pictures and videos can be reviewed, hidden, deleted, or escalated against the account here.",
"empty": "No matching reports found.",
"loadError": "The reports could not be loaded.",
"actionError": "The moderation action could not be completed.",
"actionSuccess": "The moderation action was saved.",
"target": "Target",
"owner": "Owner",
"reporter": "Reporter",
"reason": "Reason",
"statusLabel": "Status",
"meta": "Time / action",
"actions": "Actions",
"image": "Image",
"video": "Video",
"hidden": "Hidden",
"preview": "Preview",
"previewError": "The preview could not be loaded.",
"dismiss": "Dismiss",
"hide": "Hide",
"restore": "Restore",
"delete": "Delete",
"blockUploads": "Block uploads",
"revokeAccess": "Revoke erotic access",
"notePrompt": "Note for this moderation action",
"actionLabels": {
"dismiss": "Dismissed",
"hide_content": "Hidden",
"restore_content": "Restored",
"delete_content": "Deleted",
"block_uploads": "Uploads blocked",
"revoke_access": "Access revoked"
},
"filters": {
"open": "Open",
"actioned": "Actioned",
"dismissed": "Dismissed",
"all": "All"
},
"status": {
"open": "Open",
"actioned": "Actioned",
"dismissed": "Dismissed"
}
},
"rights": {
"add": "Add right",
"select": "Please select",
@@ -178,6 +258,7 @@
"edit": "Edit Chat Room",
"type": "Type",
"isPublic": "Publicly Visible",
"isAdultOnly": "Erotic area only",
"actions": "Actions",
"genderRestriction": {
"show": "Enable Gender Restriction",
@@ -318,4 +399,4 @@
}
}
}
}
}

View File

@@ -2,6 +2,7 @@
"chat": {
"multichat": {
"title": "Multi Chat",
"eroticTitle": "Erotic chat",
"autoscroll": "Auto scroll",
"options": "Options",
"send": "Send",
@@ -155,4 +156,4 @@
"selfstopped": "You left the conversation."
}
}
}
}

View File

@@ -374,6 +374,27 @@
"active": "Active",
"noProductions": "No running productions."
},
"columns": {
"city": "City",
"type": "Type"
},
"types": {
"production": "Production",
"store": "Sales",
"fullstack": "Production with sales"
},
"revenue": {
"title": "Product revenue",
"product": "Product",
"absolute": "Revenue (absolute)",
"perMinute": "Revenue per minute",
"expand": "Show revenue",
"collapse": "Hide revenue",
"knowledge": "Product knowledge",
"profitAbsolute": "Total profit",
"profitPerMinute": "Profit per minute",
"betterPrices": "Better prices elsewhere"
},
"vehicles": {
"cargo_cart": "Cargo cart",
"ox_cart": "Ox cart",

View File

@@ -70,6 +70,8 @@
"userrights": "User rights",
"m-users": {
"userlist": "User list",
"adultverification": "Erotic approvals",
"eroticmoderation": "Erotic moderation",
"userstatistics": "User statistics",
"userrights": "User rights"
},
@@ -114,4 +116,4 @@
"church": "Church"
}
}
}
}

View File

@@ -148,7 +148,34 @@
"language": "Language",
"showinsearch": "Show in User Search",
"changeaction": "Change User Data",
"oldpassword": "Old Password (required)"
"oldpassword": "Old Password (required)",
"adultAccessTitle": "Erotic area",
"adultAccessIntro": "The erotic area is intended only for adult users and also requires moderator approval.",
"requestAdultVerification": "Request access",
"requestAdultVerificationSuccess": "Access request submitted.",
"requestAdultVerificationError": "Access request could not be submitted.",
"adultStatus": {
"ineligible": {
"title": "Not available",
"body": "The erotic area is only visible to adult users."
},
"none": {
"title": "Not unlocked yet",
"body": "The area is visible, but it stays locked until a moderator approves it."
},
"pending": {
"title": "Review pending",
"body": "Your request is waiting for moderation review. The area stays locked until then."
},
"approved": {
"title": "Unlocked",
"body": "The erotic area is enabled for your account."
},
"rejected": {
"title": "Request denied",
"body": "The last request was not approved. You can submit a new request."
}
}
},
"languageAssistant": {
"eyebrow": "Settings",

View File

@@ -248,8 +248,72 @@
"withdrawn": "You have withdrawn your friendship request.",
"denied": "You have denied the friendship request.",
"accepted": "The friendship has been established."
}
,
},
"erotic": {
"eyebrow": "Erotic",
"accessTitle": "Unlock the erotic area",
"accessIntro": "Pictures, videos and later chat areas are visible from age 18, but only usable after moderator approval.",
"lockedShort": "This area becomes usable only after moderator approval.",
"requestVerification": "Request access",
"requestSent": "The access request has been submitted.",
"requestError": "The access request could not be submitted.",
"requestInfoTitle": "Submitted proof",
"documentLabel": "Verification document",
"noteLabel": "Short note for moderation",
"settingsLink": "Open account settings",
"picturesTitle": "Erotic pictures",
"picturesIntro": "Your content stays strictly separate from the normal gallery. Manage only images for the unlocked erotic area here.",
"uploadTitle": "Upload erotic picture",
"noimages": "There are currently no pictures in this erotic folder.",
"videosTitle": "Erotic videos",
"videosIntro": "Your own videos are managed separately from the normal social area. This first version focuses on upload, list and playback.",
"videoUploadTitle": "Upload erotic video",
"videoUploadHint": "The first rollout stores videos directly and intentionally skips transcoding or streaming profiles for now.",
"videoDescription": "Description",
"videoFile": "Video file",
"myVideos": "My videos",
"noVideos": "You have not uploaded any erotic videos yet.",
"reportAction": "Report",
"reportNote": "Short note for moderation",
"submitReport": "Submit report",
"reportSubmitted": "The report has been submitted.",
"reportError": "The report could not be saved.",
"moderationHidden": "Hidden by moderation",
"hiddenByModeration": "This content has been temporarily hidden by moderation.",
"reportReasons": {
"suspected_minor": "Suspected minor",
"non_consensual": "Non-consensual content",
"violence": "Violence or abuse",
"harassment": "Harassment or pressure",
"spam": "Spam or scam",
"other": "Other"
},
"intro": "The area is unlocked. The actual picture and video modules follow in the next step.",
"enabledTitle": "Access unlocked",
"enabledBody": "Your account is enabled for the erotic area. The separate picture and video views are built next.",
"roadmapTitle": "Next up",
"roadmapModeration": "separate moderation and reporting paths",
"roadmapUpload": "dedicated upload and management views",
"roadmapSeparation": "clear separation from the normal gallery",
"status": {
"none": {
"title": "Not unlocked yet",
"body": "The area is visible, but stays locked until moderator approval."
},
"pending": {
"title": "Review pending",
"body": "Your request is waiting for moderation review."
},
"approved": {
"title": "Unlocked",
"body": "The erotic area is already unlocked for your account."
},
"rejected": {
"title": "Request denied",
"body": "The last request was denied. You can submit a new request."
}
}
},
"vocab": {
"title": "Vocabulary trainer",
"description": "Create languages (or subscribe to them) and share them with friends.",