gh_UserManager/apps/web/lib/content.ts
bermooda-company 54d5891edf user
2026-08-23 23:59:14 +03:30

147 lines
5.1 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export type Lang = "fa" | "en";
export interface Product {
key: string;
name: string;
tagline: Record<Lang, string>;
category: Record<Lang, string>;
status: "connected" | "future";
icon: "bermooda" | "hamsoo" | "spark";
}
export const PRODUCTS: Product[] = [
{
key: "bermooda",
name: "Bermooda",
tagline: {
fa: "پلتفرم مدیریت کسب‌وکار و ERP",
en: "ERP / Business Management Platform",
},
category: { fa: "ERP", en: "ERP" },
status: "connected",
icon: "bermooda",
},
{
key: "hamsoo",
name: "Hamsoo",
tagline: {
fa: "شبکه کسب‌وکار و استعدادها",
en: "Business & Talent Network",
},
category: { fa: "شبکه", en: "Network" },
status: "connected",
icon: "hamsoo",
},
{
key: "future",
name: "Future Apps",
tagline: {
fa: "محصول بعدی شما، متصل به یک هویت",
en: "Your next product, on one identity",
},
category: { fa: "اکوسیستم", en: "Ecosystem" },
status: "future",
icon: "spark",
},
];
export interface Feature {
icon: "shield" | "key" | "users" | "building" | "activity" | "lock";
title: Record<Lang, string>;
description: Record<Lang, string>;
}
export const FEATURES: Feature[] = [
{
icon: "key",
title: { fa: "احراز هویت OAuth 2.0 و OpenID Connect", en: "OAuth 2.0 & OpenID Connect" },
description: {
fa: "جریان‌های استاندارد authorize، token و refresh با پشتیبانی از PKCE برای وب و موبایل.",
en: "Standard authorize, token and refresh flows with PKCE support for web and mobile.",
},
},
{
icon: "shield",
title: { fa: "نشست‌ها و دستگاه‌ها", en: "Sessions & Devices" },
description: {
fa: "ردیابی نشست‌های فعال، لغو از راه دور و تشخیص دستگاه با چرخش توکن ایمن.",
en: "Track active sessions, revoke remotely, detect devices, and rotate tokens safely.",
},
},
{
icon: "building",
title: { fa: "سازمان‌ها و عضویت‌ها", en: "Organizations & Memberships" },
description: {
fa: "مدل سازمانی یکپارچه که هر محصول می‌تواند از آن به عنوان شرکت یا تیم استفاده کند.",
en: "A unified org model every product can reuse as company, team or workspace.",
},
},
{
icon: "users",
title: { fa: "اپلیکیشن‌ها و اعتبار سرویس", en: "Applications & Service Credentials" },
description: {
fa: "هر محصول client_id و client_secret اختصاصی دارد؛ توکن‌ها با مالکیت مشخص صادر می‌شوند.",
en: "Each product gets its own client_id and secret; tokens carry explicit ownership.",
},
},
{
icon: "activity",
title: { fa: "رویدادهای امنیتی و لاگ حسابرسی", en: "Security Events & Audit Log" },
description: {
fa: "هر ورود، خروج و لغو نشست به عنوان رویداد قابل‌پیگیری ثبت می‌شود.",
en: "Every login, logout and revocation is recorded as a traceable security event.",
},
},
{
icon: "lock",
title: { fa: "محدودیت نرخ و محافظت بروته‌کنش", en: "Rate Limiting & Brute-force Protection" },
description: {
fa: "قفل خودکار پس از تلاش‌های ناموفق و محدودیت نرخ در سطح کاربر و آدرس IP.",
en: "Automatic lockout after failed attempts and per-user, per-IP rate limits.",
},
},
];
export const PROTOCOLS: string[] = [
"OAuth 2.0",
"OpenID Connect",
"PKCE",
"JWT (RS256)",
"MFA-Ready",
];
export const STEPS = [
{
icon: "compass",
title: { fa: "کشف", en: "Discover" },
description: {
fa: "محصول از طریق .well-known/openid-configuration تنظیمات و endpointها را می‌خواند.",
en: "A product reads configuration and endpoints via .well-known/openid-configuration.",
},
},
{
icon: "fingerprint",
title: { fa: "مجوزدهی", en: "Authorize" },
description: {
fa: "کاربر در صفحه ورود یکپارچه احراز می‌شود و دسترسی را تأیید می‌کند.",
en: "The user authenticates on the unified login and consents to scopes.",
},
},
{
icon: "ticket",
title: { fa: "دریافت توکن", en: "Receive Tokens" },
description: {
fa: "پلتفرم توکن دسترسی JWT امضا‑شده با کلید خصوصی و یک refresh token صادر می‌کند.",
en: "The platform issues a JWT access token signed with the private key plus a refresh token.",
},
},
{
icon: "badgeCheck",
title: { fa: "تأیید", en: "Verify" },
description: {
fa: "محصول فقط با کلید عمومی توکن را تأیید می‌کند؛ بدون دسترسی به کلید خصوصی.",
en: "The product verifies the token using only the public key — never the private key.",
},
},
];