@o2s/blocks.user-account
v1.5.1
Published
A block displaying and managing user account information.
Downloads
483
Readme
@o2s/blocks.user-account
A block displaying and managing user account information.
The user-account block shows the authenticated user's profile and allows editing when permitted. Users can view and update account details (e.g. name, email). Permissions (view, edit) are enforced via ACL. Typically used on "My Account" or profile pages in customer portals.
- Profile view – Display user name, email, and other profile fields
- Edit profile – Update account details (when ACL permits)
- Permission-based – ACL for view, edit
- Auth-required – Profile scoped to logged-in user
Content editors place the block via CMS. Developers connect a Users integration and Auth for authentication.
Domain
Domain: Account
Installation
npm install @o2s/blocks.user-accountUsage
Backend (API Harmonization)
Register the block in app.module.ts:
import * as UserAccount from '@o2s/blocks.user-account/api-harmonization';
import { AppConfig } from './app.config';
@Module({
imports: [
UserAccount.Module.register(AppConfig),
],
})
export class AppModule {}Frontend
Register the block in renderBlocks.tsx:
import * as UserAccount from '@o2s/blocks.user-account/frontend';
export const renderBlocks = async (blocks: CMS.Model.Page.SlotBlock[]) => {
return blocks.map((block) => {
if (block.type === 'user-account') {
return (
<UserAccount.UserAccountRenderer
key={block.id}
id={block.id}
slug={slug}
locale={locale}
accessToken={session?.accessToken}
userId={session?.user?.id}
routing={routing}
/>
);
}
// ... other blocks
});
};SDK
Use the SDK to fetch user account data:
import { sdk } from '@o2s/blocks.user-account/sdk';
// SDK uses NEXT_PUBLIC_API_URL for the API base URL
const userAccount = await sdk.blocks.getUserAccount(
{ id: 'block-id' },
{ 'x-locale': 'en' },
accessToken
);Configuration
This block requires the following integrations to be configured in AppConfig:
import { Users, CMS, Auth } from '@o2s/configs.integrations';
export const AppConfig: ApiConfig = {
integrations: {
users: Users.UsersIntegrationConfig, // Required
cms: CMS.CmsIntegrationConfig, // Required
auth: Auth.AuthIntegrationConfig, // Required
},
};Environment Variables
The required environment variables depend on which integrations you're using:
- For mocked integration: See
@o2s/integrations.mockeddocumentation for database setup
API
Block Endpoint
GET /api/blocks/user-account/:idHeaders:
x-locale: Content locale (required)
Response:
{
id: string;
data: {
user: User;
account: AccountInfo;
};
}Related Blocks
About Blocks in O2S
Blocks are self-contained, reusable UI components that combine harmonizing and frontend components into a single package. Each block is independently packaged as an NPM module and includes three primary parts: API Harmonization Module, Frontend Components, and SDK Methods. Blocks allow you to quickly add or remove functionality without impacting other components of the application.
- See all blocks: Blocks Documentation
- View this block in Storybook: user-account
About O2S
Part of Open Self Service (O2S) - an open-source framework for building composable customer self-service portals. O2S simplifies integration of multiple headless APIs into a scalable frontend, providing an API-agnostic architecture with a normalization layer.
- Website: https://www.openselfservice.com/
- GitHub: https://github.com/o2sdev/openselfservice
- Documentation: https://www.openselfservice.com/docs
