Skip to main content
Glama

dhis2_setup_authentication_patterns

Create and configure authentication patterns for DHIS2 apps, supporting basic, OAuth2, cookie, and token-based methods. Manage session settings, security features, and redirect URLs for secure user access.

Instructions

Generate authentication patterns and examples for DHIS2 app

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
authTypeYesType of authentication to implement
providersNoAuthentication providers to support
redirectUrlsNo
securityFeaturesNo
sessionManagementNo

Implementation Reference

  • Handler dispatch in main tool switch statement that calls the generator function with tool arguments and returns the generated content.
    case 'dhis2_setup_authentication_patterns': const authArgs = args as any; const authPatterns = generateAuthenticationPatterns(authArgs); return { content: [ { type: 'text', text: authPatterns, }, ], };
  • Core implementation: generates markdown documentation with authentication code patterns (basic, OAuth2, cookie, token) based on input parameters like authType, providers, etc.
    export function generateAuthenticationPatterns(args: any): string { const { authType, providers = [], sessionManagement = {}, securityFeatures = {}, redirectUrls = {} } = args; return `# DHIS2 Authentication Patterns ## ${authType.toUpperCase()} Authentication Setup ${generateAuthTypeImplementation(authType)} ${providers.length > 0 ? generateProviderIntegration(providers) : ''} ## Session Management \`\`\`javascript const sessionConfig = { timeout: ${sessionManagement.timeout || 30}, // minutes refreshTokens: ${sessionManagement.refreshTokens || false}, rememberUser: ${sessionManagement.rememberUser || false} }; \`\`\` ${Object.keys(securityFeatures).length > 0 ? generateSecurityConfiguration(securityFeatures) : ''} ## Redirect Configuration \`\`\`javascript const redirectConfig = { success: '${redirectUrls.success || '/dashboard'}', failure: '${redirectUrls.failure || '/login'}', logout: '${redirectUrls.logout || '/login'}' }; \`\`\` ## Testing Authentication \`\`\`bash # Test login endpoint curl -X POST \\ -H "Content-Type: application/json" \\ -d '{"username":"admin","password":"district"}' \\ https://your-dhis2-instance.com/api/auth/login # Test current user endpoint curl -H "Cookie: JSESSIONID=your-session-id" \\ https://your-dhis2-instance.com/api/me \`\`\` `; }
  • Registers the tool name with required permission 'canConfigureApps' in the TOOL_PERMISSIONS map used for access control.
    ['dhis2_init_webapp', 'canConfigureApps'], ['dhis2_configure_app_manifest', 'canConfigureApps'], ['dhis2_configure_build_system', 'canConfigureApps'], ['dhis2_setup_dev_environment', 'canConfigureApps'], ['dhis2_generate_app_runtime_config', 'canConfigureApps'], ['dhis2_create_datastore_namespace', 'canConfigureApps'], ['dhis2_manage_datastore_key', 'canConfigureApps'], ['dhis2_setup_authentication_patterns', 'canConfigureApps'], ['dhis2_create_ui_components', 'canUseUITools'], ['dhis2_generate_test_setup', 'canConfigureApps'], // Debugging Tools ['dhis2_diagnose_cors_issues', 'canDebugApplications'], ['dhis2_configure_cors_allowlist', 'canDebugApplications'], ['dhis2_debug_authentication', 'canDebugApplications'], ['dhis2_fix_proxy_configuration', 'canDebugApplications'], ['dhis2_resolve_build_issues', 'canDebugApplications'], ['dhis2_optimize_performance', 'canDebugApplications'], ['dhis2_validate_environment', 'canDebugApplications'], ['dhis2_migration_assistant', 'canDebugApplications'], // Android SDK Tools ['dhis2_android_init_project', 'canUseMobileFeatures'], ['dhis2_android_configure_gradle', 'canUseMobileFeatures'], ['dhis2_android_setup_sync', 'canConfigureMobile'], ['dhis2_android_configure_storage', 'canConfigureMobile'], ['dhis2_android_setup_location_services', 'canUseMobileFeatures'], ['dhis2_android_configure_camera', 'canUseMobileFeatures'], ['dhis2_android_setup_authentication', 'canConfigureMobile'], ['dhis2_android_generate_data_models', 'canUseMobileFeatures'], ['dhis2_android_setup_testing', 'canUseMobileFeatures'], ['dhis2_android_configure_ui_patterns', 'canUseMobileFeatures'], ['dhis2_android_setup_offline_analytics', 'canUseMobileFeatures'], ['dhis2_android_configure_notifications', 'canUseMobileFeatures'], ['dhis2_android_performance_optimization', 'canUseMobileFeatures'], // UI Library Tools ['dhis2_generate_ui_form_patterns', 'canUseUITools'], ['dhis2_generate_ui_data_display', 'canUseUITools'], ['dhis2_generate_ui_navigation_layout', 'canUseUITools'], ['dhis2_generate_design_system', 'canUseUITools'], ['android_generate_material_form', 'canUseMobileFeatures'], ['android_generate_list_adapter', 'canUseMobileFeatures'], ['android_generate_navigation_drawer', 'canUseMobileFeatures'], ['android_generate_bottom_sheet', 'canUseMobileFeatures'], ]);
  • Helper function that generates specific authentication implementation code based on authType.
    function generateAuthTypeImplementation(authType: string): string { switch (authType) { case 'basic': return `### Basic Authentication \`\`\`jsx import { useConfig } from '@dhis2/app-runtime'; const LoginForm = () => { const { baseUrl } = useConfig(); const handleLogin = async (username, password) => { const response = await fetch(\`\${baseUrl}/api/me\`, { headers: { 'Authorization': \`Basic \${btoa(\`\${username}:\${password}\`)}\` } }); if (response.ok) { // Store credentials securely localStorage.setItem('dhis2.username', username); // Navigate to app } }; return ( <form onSubmit={handleLogin}> <input name="username" type="text" required /> <input name="password" type="password" required /> <button type="submit">Login</button> </form> ); }; \`\`\``; case 'oauth2': return `### OAuth2 Authentication \`\`\`jsx import { useConfig } from '@dhis2/app-runtime'; const OAuth2Login = () => { const { baseUrl } = useConfig(); const handleOAuth2Login = () => { const clientId = process.env.REACT_APP_OAUTH2_CLIENT_ID; const redirectUri = window.location.origin + '/oauth/callback'; const oauthUrl = \`\${baseUrl}/uaa/oauth/authorize?response_type=code&client_id=\${clientId}&redirect_uri=\${redirectUri}\`; window.location.href = oauthUrl; }; return <button onClick={handleOAuth2Login}>Login with DHIS2</button>; }; \`\`\``; case 'cookie': return `### Cookie-based Authentication \`\`\`jsx const CookieAuth = () => { const handleLogin = async (username, password) => { const response = await fetch(\`\${baseUrl}/dhis-web-commons-security/login.action\`, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: \`j_username=\${username}&j_password=\${password}\`, credentials: 'include' }); if (response.ok) { // Cookie is automatically handled by browser window.location.href = '/'; } }; return ( // Login form implementation ); }; \`\`\``; case 'token': return `### Token-based Authentication \`\`\`jsx const TokenAuth = () => { const handleLogin = async (username, password) => { const response = await fetch(\`\${baseUrl}/api/auth/token\`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password }) }); const { token } = await response.json(); // Store token securely localStorage.setItem('dhis2.token', token); // Set default header for future requests axios.defaults.headers.common['Authorization'] = \`Bearer \${token}\`; }; return ( // Login form implementation ); }; \`\`\``; default: return '### Custom Authentication Implementation'; } }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dradebo/dhis2-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server