# Bring Your Own Key (BYOK) Source: https://docs.aikeedo.com/advanced/byok Learn how to enable and manage workspace-level API keys for OpenAI and Anthropic services in your Aikeedo installation. ## Introduction BYOK (Bring Your Own Key) allows you to let workspace owners use their own OpenAI and Anthropic API keys. This gives workspaces more control over their AI service usage while reducing your central API costs. ## How It Works When you enable BYOK: * Workspace owners can add their own API keys in their workspace settings * Their workspace will use their custom keys instead of your global API keys * API costs for that workspace will be charged to their own API keys * Workspaces without custom keys will continue using your global API keys BYOK helps distribute API costs across workspaces while maintaining central control over feature availability. In [session-based usage mode](/billing/overview#usage-mode), BYOK workspaces skip session usage gates for zero-cost OpenAI and Anthropic models only. Other models still consume credits and count toward the session cap. ## Enabling BYOK 1. Go to Settings → Integrations in your admin panel 2. Select either OpenAI or Anthropic 3. Toggle the "Custom API keys (BYOK)" switch to enable 4. Click "Save changes" You can enable BYOK separately for OpenAI and Anthropic services. ## Administrative Benefits ### Cost Management * Reduce central API costs by letting workspaces use their own keys * Maintain global API keys as fallback for workspaces without custom keys * Better cost distribution across high-usage workspaces ### Control * Enable/disable BYOK at any time * Choose which AI services support custom keys * Keep control over feature availability while delegating API costs ## Important Notes When disabling BYOK for a service, all workspaces using custom keys will automatically switch to your global API key. * Workspace owners are responsible for managing their API key validity and costs * Your global API keys serve as fallback when custom keys are not provided * Workspace members cannot see the custom API keys set by workspace owners ## Troubleshooting If workspace owners report issues: 1. Verify BYOK is properly enabled for the relevant service 2. Check if the workspace has entered valid API keys 3. Ensure your global API keys are working as fallback ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Email Templates Source: https://docs.aikeedo.com/advanced/email-templates Customize and manage multilingual email templates in Aikeedo including welcome emails, password resets, and workspace invitations using Twig templating. ## Introduction Aikeedo provides customizable email templates for all system communications. This guide covers template location, multilingual support, and customization best practices. ## Template Location All email templates are stored in the `/resources/emails` directory of your Aikeedo installation. This centralized location makes it easy to manage and update your email content. ## Available Templates Aikeedo comes with the following essential templates: ### Core Templates * `layout.twig`: Base layout template that provides a consistent design for all emails * `export.twig`: Template for admin exported data * `password-reset.twig`: Sent when a user requests a password reset * `verify-email.twig`: Used for email verification processes * `welcome.twig`: Sent to new users upon registration * `workspace-invitation.twig`: Used when inviting users to join a workspace All email templates extend layout.twig, which serves as the base layout template providing consistent styling across all emails. ## Multilingual Support Aikeedo supports multilingual email templates through a directory-based structure. ### Setting Up Multilingual Templates 1. Create a directory in `/resources/emails` that matches your locale string from `locale.json` ```bash theme={null} # Example for Czech language /resources/emails/cs-CZ/ ``` 2. Duplicate the template files into the locale-specific directory ```bash theme={null} /resources/emails/cs-CZ/welcome.twig /resources/emails/cs-CZ/verify-email.twig # ... other templates ``` 3. Translate the content in the duplicated templates The `layout.twig` file in the root directory serves as the default layout for all languages. While you can create language-specific versions of layout.twig, this is optional as the default layout is typically suitable for all languages. ### Template Fallback * Templates in the root `/resources/emails` directory serve as fallbacks * If a localized template isn't found, the system will use the corresponding template from the root directory Even if you only use English, it's highly recommended to: 1. Create an `en-US` directory 2. Duplicate your customized templates there This prevents your customizations from being overwritten during updates. ## Customizing Templates You have the flexibility to edit these templates to align with your brand voice and specific needs: 1. Navigate to the appropriate language directory (or create one) 2. Copy the template you want to customize from the root directory 3. Make your changes while keeping the Twig template syntax intact 4. Save the file After editing any email template, you must clear the app cache for the changes to take effect. This ensures that Aikeedo uses the most up-to-date version of your templates. ## Template Format Email templates in Aikeedo use the Twig templating engine. If you're new to Twig, you can find more information in the [Twig documentation](https://twig.symfony.com/doc/3.x/). ## Best Practices When customizing email templates: * Keep your messaging clear and concise * Use a consistent tone that matches your brand voice * Test your emails across different email clients * Include all necessary information without overwhelming the recipient * Maintain separate language directories for better organization * Always backup your customized templates before updates ## Related Guides * [Mailer Configuration](/email/mailer) - Set up email delivery * [SMTP Setup](/email/smtp) - Configure SMTP server * [Localization](/advanced/localization) - Manage language settings Always clear the application cache after modifying email templates to ensure changes take effect immediately. # Localization Source: https://docs.aikeedo.com/advanced/localization Translate Aikeedo into multiple languages using .po files, manage locale.json settings, and enable language selection for global audiences. ## Introduction Localization enables multilingual support for your Aikeedo platform. This guide covers translation file management, language configuration, and user language selection. ## Translation File Locations Aikeedo uses separate translation files for different parts of the application: 1. **App and Admin Interface**: `/locale` directory 2. **Landing Page (Home Page)**: `/public/content/plugins/heyaikeedo/default/locale` directory This is the default location for the landing page translations. The full path structure follows this pattern: `/{webroot}/content/plugins/{organization}/{theme}/locale` Where: * `{webroot}` is typically `public`, but may be `public_html` in some installations (e.g., cPanel) * `{organization}` is usually `heyaikeedo`, but can be customized to your organization name if you're using a custom theme * `{theme}` is `default` for the standard theme, but could be different if you're using a custom theme Always check your specific installation setup to confirm the exact path. For more information on creating custom themes and managing their translations, refer to our [Theme Development](/development/introduction) guide. ## Translation Process To translate Aikeedo into a new language or modify existing translations, follow these steps: 1. Navigate to the appropriate directory based on the section you want to translate. 2. Locate the `.po` file for your target language. 3. Open the file in a text editor or a specialized PO file editor. 4. Find the `msgid` entries, which contain the original English text. 5. Enter your translations in the corresponding `msgstr` fields. Always keep the `msgid` values unchanged. Only modify the `msgstr` entries. ### Example Translation Here's a simple example of how a translation might look in a `.po` file: ``` msgid "Welcome to Aikeedo" msgstr "Bienvenue sur Aikeedo" ``` ## Managing Available Languages To enable or disable languages for your Aikeedo instance: 1. Open the `/locale/locale.json` file. 2. Enable or disable languages by setting their `"enabled"` field to `true` or `false`. 3. Set the default language by updating the `"default"` field at the top of the file: ```json theme={null} { "default": "en-US", "locales": [ // ... language entries ... ] } ``` The default language code must match one of the enabled languages in the `locales` array. For example, if you want to set Spanish as the default, first ensure `es-ES` is enabled, then update the default value to `"es-ES"`. While Aikeedo includes configuration for 30+ languages, please note that the actual translation strings are not included by default. You'll need to provide your own translations for languages other than English. ## User Language Selection Aikeedo provides two ways for users to change their preferred language: ### For Logged-in Users 1. Log into the Aikeedo app. 2. Click on your name in the account menu (bottom-left of the app dashboard). 3. Navigate to your profile page. 4. Look for the language selection option and choose your preferred language. ### For Website Visitors The language selection process for website visitors may vary depending on the theme used. In the default theme: 1. Look for the language switcher in the website header (often in the top-right corner). 2. Click on the switcher (typically represented by a globe icon or current language code). 3. Select your preferred language from the dropdown menu. The exact location and appearance of the language selector may differ based on your chosen theme. Some themes might place it in a different part of the header, footer, or even in a side menu. ## Best Practices for Localization 1. **Consistency**: Maintain consistent terminology across all translations. 2. **Context**: Consider the context in which the text appears to ensure accurate translations. 3. **Testing**: After translating, thoroughly test the interface in each language to catch any layout or functionality issues. 4. **Regular Updates**: Keep translations up-to-date with each new release of Aikeedo. ## Troubleshooting If you encounter issues with localization: * Ensure all `.po` files are properly formatted. * Check that the `locale.json` file is correctly configured. * Clear your browser cache and application cache after making changes. * Verify that the correct language files are being loaded in the application settings. ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Prompt Templates Source: https://docs.aikeedo.com/advanced/prompt-templates Create dynamic AI prompts using Aikeedo template syntax with input tags, modifiers, conditionals, and loops for customizable user experiences. Prompt templating enables dynamic prompts with customizable user inputs. This guide covers template syntax, tags, modifiers, conditionals, and best practices for creating interactive AI experiences. ## Understanding Prompt Templates Prompt templates are pre-designed structures that include placeholders for user inputs. These templates allow you to create consistent and customizable prompts for various AI-powered tasks, such as content generation, language translation, or data analysis. ## Key Components ### Tags Tags are the building blocks of prompt templates. They represent input elements that users can customize and are enclosed in curly braces. ```scss theme={null} { input_name } ``` ### Attributes Attributes modify the behavior of tags, allowing you to fine-tune how inputs are presented and processed. They are appended to tags using the pipe character (`|`). ```scss theme={null} { input_name | attribute1 | attribute2 } ``` ## Creating Your First Prompt Template Let's create a simple prompt template for an "Article Generator": ```scss theme={null} Write an article about { topic | placeholder: Your chosen subject }. Use the following draft content: --- { content | multiline | placeholder: Draft content } --- Additional instructions: - Include relevant statistics and consider diverse perspectives. - Write it in { language } using a { tone } voice tone. ``` This template generates a form with inputs for the topic, draft content, language, and tone, allowing users to customize their article generation request. ## Available Attributes Enhance your prompt templates with these powerful attributes: Sets a custom label for the input Example: `{ input_name | label:Custom label }` Creates a multiline text input Example:`{ input_name | multiline }` Defines the input type (currently supports `enum`) Example:`{ input_name | type:enum }` Specifies options for `enum` type inputs Example:`{ input_name | type:enum | options:Option 1, Option 2, Option 3 }` Makes an input optional Example:`{ input_name | optional }` Sets a custom placeholder text Example:`{ input_name | placeholder:Custom placeholder }` Provides additional information about the input Example:`{ input_name | info:Custom info text }` ## Built-in Inputs Aikeedo provides two convenient built-in inputs to streamline your prompt templates: 1. `language`: A dropdown list of supported languages. 2. `tone`: A dropdown list of supported voice tones. Use these built-in inputs in your templates like this: ```scss theme={null} { language } { tone } ``` ## Advanced Template Example Let's create a more sophisticated prompt template for a "Comprehensive Article Generator": ```scss theme={null} Create a detailed article on { topic | placeholder: Your chosen subject | info: Specify the main focus of your article }. Target audience: { audience | type:enum | options:General, Beginners, Experts | info: Select your intended readership } Article structure: 1. Introduction 2. { section_1 | label:Main Section 1 | placeholder:E.g., Historical background } 3. { section_2 | label:Main Section 2 | placeholder:E.g., Current trends } 4. { section_3 | label:Main Section 3 | placeholder:E.g., Future implications } 5. Conclusion Key points to cover: { key_points | multiline | placeholder: List important points to address } Writing style: - Language: { language } - Tone: { tone } - Length: { word_count | placeholder:Approximate word count | info: Suggested range: 500-2000 words } Additional requirements: - Include at least { source_count | type:enum | options:2, 3, 5 | label:Number of sources } credible sources - Incorporate relevant statistics and data visualizations if applicable - Address potential counterarguments or alternative viewpoints Extra notes: { extra_notes | multiline | optional | placeholder: Any additional instructions or context } ``` This advanced template demonstrates how to combine various attributes and input types to create a comprehensive and flexible prompt for generating high-quality articles. ## Best Practices 1. **Be specific**: Clearly define what you want the AI to do in your template. 2. **Use appropriate input types**: Choose the right input type (text, multiline, enum) for each piece of information you need. 3. **Provide context**: Use the `info` attribute to give users helpful information about each input. 4. **Balance flexibility and structure**: Offer enough customization options while maintaining a clear overall structure. 5. **Test your templates**: Experiment with different combinations of inputs to ensure your template produces the desired results. ## Conclusion Prompt templates are a powerful tool for creating dynamic, customizable AI experiences. By mastering the use of tags, attributes, and built-in inputs, you can design sophisticated prompts that cater to a wide range of use cases and user needs. # Secure URLs Source: https://docs.aikeedo.com/advanced/secure-urls Enable secure URL protection in Aikeedo to safeguard uploaded and AI-generated files using tokenized URLs and time-limited access. ## Introduction Secure URLs protect user-uploaded and AI-generated files through tokenized, time-limited URLs. This guide covers enabling and managing this security feature. ## How It Works When secure URLs are enabled: * All files uploaded by your users are protected through tokenized URLs * The app automatically generates secure URLs whenever files need to be accessed * Files can only be accessed through valid tokenized URLs * Direct file URLs without tokens will not work Secure URLs are completely transparent to your users - they won't notice any difference in how they access files. The app automatically handles all security aspects behind the scenes. ## Managing Secure URLs ### Prerequisites Before enabling secure URLs, ensure: * You're using a supported cloud storage provider (like Digital Ocean Spaces) * Your Aikeedo installation is version 2.10 or higher * Your Cloud Storage plugin is version 1.2 or higher Local storage does not support secure URLs. You must configure a cloud storage provider in your admin panel first. ### Enabling the Feature 1. Log in to your Aikeedo admin panel 2. Go to **Settings** > **File storage** 3. Under the Configuration section, ensure your cloud storage adapter is selected 4. Toggle the "Secure URLs" switch to enable the feature After enabling, all new files uploaded by your users will automatically be protected. Files uploaded before enabling this feature will remain accessible through their original URLs. ## Security Considerations ### URL Access Control * The app automatically generates new secure URLs whenever files are accessed * Each secure URL contains a token that expires after 1 hour * Users won't notice the URL expiration - new secure URLs are generated automatically when needed * Users cannot bypass the security by sharing direct file URLs Your users will have continuous access to their files. The 1-hour expiration only applies to individual secure URLs, not to the files themselves. New secure URLs are automatically generated when needed. If you've enabled CDN in your cloud storage settings (like Digital Ocean Spaces CDN), ensure its edge caching time is set to 1 hour or less. Otherwise, the CDN might continue serving expired secure URLs to your users. ### Best Practices 1. Enable secure URLs before launching your service 2. Avoid disabling secure URLs once enabled 3. Regularly check your storage settings 4. Monitor your users' file access patterns ## Limitations Important points to consider: * Local storage cannot use secure URLs * Some cloud storage providers may not support this feature * Old URLs will stop working if you disable secure URLs after enabling them * Once enabled, switching to a different cloud storage provider is not recommended as previously uploaded files will become inaccessible If you're using Cloudflare R2, secure URLs will only work with the default S3 API endpoint (`.r2.cloudflarestorage.com`) and cannot be used with custom domains. After enabling secure URLs, stick with your chosen cloud storage provider. Switching providers will break access to files uploaded with secure URLs enabled. Verify secure URL support with your chosen cloud storage provider before enabling the feature. ## Troubleshooting If your users report issues accessing files: 1. Check if your cloud storage provider is functioning correctly 2. Verify your CDN settings if enabled 3. Ensure the secure URLs feature is properly enabled 4. Check if the reported files were uploaded after enabling secure URLs ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Text Streaming Source: https://docs.aikeedo.com/advanced/text-streaming Configure and troubleshoot real-time text streaming for AI responses in Aikeedo including server configuration and hosting compatibility. ## Introduction Text streaming displays AI responses in real-time as they generate, creating a more engaging user experience. This guide covers functionality, compatibility, and troubleshooting. ## How It Works Aikeedo's text streaming functionality: * Works out of the box on most web servers * Supports shared hosting environments * Requires minimal configuration in most cases Text streaming is enabled by default and should work immediately after installation. Most users won't need to make any configuration changes. ## Server Configuration While Aikeedo works with default server settings in most cases, some servers might need minor adjustments: ### PHP Settings If streaming isn't working, check these settings in your `php.ini` file: ```ini theme={null} output_buffering = Off zlib.output_compression = Off ``` These settings prevent PHP from buffering the output, allowing for immediate transmission of text chunks to the client. If you're using shared hosting and can't modify php.ini, contact your hosting provider. Many providers can adjust these settings for you if needed. ### Web Server Settings #### For Nginx Servers Aikeedo automatically sets the required headers for text streaming. However, if your Nginx is configured as a proxy server, you might need these settings: ```nginx theme={null} proxy_buffering off; fastcgi_buffering off; ``` These settings are typically added in the `nginx.conf` file or within the specific server block for your Aikeedo installation. Most Nginx installations work without any changes, thanks to the `X-Accel-Buffering: no` header Aikeedo sets for streaming responses. #### For Apache Servers Apache servers typically work without any changes. If you experience issues, try disabling the gzip module by adding the following to your `/public/.htaccess` file: ```apache theme={null} RewriteRule ^(.*)$ $1 [NS,E=no-gzip:1,E=dont-vary:1] ``` ## Common Issues ### Buffering Issues If you experience delayed or chunked responses, or responses appear all at once instead of streaming: 1. Verify all buffering-related settings are properly configured 2. Clear your server's cache 3. Restart your web server after making configuration changes 4. Clear your browser cache 5. Try a different browser 6. Check if your hosting provider is using any aggressive caching ### Caching Mechanisms Various caching layers can affect text streaming: * Server-level caching * PHP opcode caching * Reverse proxy caching * Browser caching If responses are delayed, try disabling any caching plugins or features your hosting provider might have enabled. ### Known Hosting Limitations Some hosting providers may have restrictions that affect text streaming. If you experience issues, contact your hosting provider's support team for assistance. * **Cloudways**: Text streaming is not supported due to their server stack configuration * **Shared Hosting**: May have limited configuration options * **Managed Hosting**: Check with your provider about configuring streaming settings ## Troubleshooting Checklist Use this checklist to diagnose streaming issues: * Verify PHP configuration settings * Check web server buffering settings * Confirm no interfering caching mechanisms * Test with different browsers * Monitor server logs for errors * Verify hosting provider compatibility ## Need Help? If you need assistance with Aikeedo: Get expert help from our team with a paid support subscription Check common issues and solutions # Users & Workspaces Source: https://docs.aikeedo.com/advanced/users-workspaces Understand user types, workspace management, roles, invitations, and multi-tenant architecture in Aikeedo for organizational access control. Aikeedo's user and workspace system provides flexible access control for individual users and organizations. This guide covers user types, workspace management, and collaboration features. ## User Types Aikeedo has two main types of users: 1. **Standard Users**: These are the end-users of your website who interact with the AI features and content. 2. **Admin Users**: Administrators have enhanced permissions and can access the admin panel to manage the application. ### Admin Users Admin users have all the capabilities of standard users, plus additional privileges: * Access to the admin panel * Control over application settings * Ability to manage and analyze user and application data * Oversight of system-wide data management and analytics The initial admin user is created during the installation process. This user becomes the app owner. Admin users can: * Create new admin accounts * Manage existing admin accounts (modify permissions, deactivate, or delete) * Elevate standard user accounts to admin status By default, it's not possible to sign up directly as an admin user. This is a security measure to protect your application. ## Workspaces Workspaces are a core concept in Aikeedo, allowing for organized collaboration and resource management. Key features of workspaces: * Users can create and own multiple workspaces * Each workspace can have multiple users * Users can be part of multiple workspaces * Every workspace has a single owner ### Workspace Owner Capabilities Workspace owners have full control over their workspaces, including the ability to: * Create new workspaces * Delete existing workspaces * Invite new users to the workspace * Remove users from the workspace * Change the workspace plan ### Default Workspace When a user signs up for Aikeedo, they are automatically provided with a default workspace. This initial workspace is owned by the new user and serves as their personal starting point within the platform. By default, this workspace is typically named "Personal," reflecting its individual nature. However, to accommodate user preferences and organizational needs, the workspace owner has the flexibility to rename this default space as they see fit. This feature allows users to personalize their Aikeedo experience from the very beginning, tailoring their workspace to align with their specific projects or branding requirements. ## User-Workspace Relationship The relationship between users and workspaces is many-to-many: * A single user can create and own multiple workspaces * A single user can be a member of multiple workspaces (including those owned by others) * A workspace can have multiple user members This structure allows for flexible collaboration and resource sharing across teams or projects, while also enabling users to manage multiple distinct workspaces for different purposes. ## Best Practices To make the most of Aikeedo's user and workspace system: 1. **Carefully assign admin roles**: Only give admin access to trusted individuals who need to manage the application. 2. **Educate users on workspace features**: Help your team understand how to effectively use workspaces for collaboration and organization. ## Related Guides * [Authentication Settings](/authentication/accounts-settings) * [Billing Overview](/billing/overview) * [Initial Setup](/setup/initial-setup) # Account Settings Source: https://docs.aikeedo.com/authentication/accounts-settings Configure user registration, sign-in policies, and email verification requirements in Aikeedo to balance accessibility and security. Account settings control user registration, authentication, and email verification policies for your Aikeedo platform. ## General Settings ### User Accounts This setting controls whether users can create and access accounts on your platform. * When enabled, users can sign in through the sign-in form and API. * If disabled, only admin accounts will be able to sign in. Disabling user accounts will prevent regular users from accessing your platform. Use this option with caution. ### Signup Form This option determines whether new users can register for accounts on your platform. * When enabled, users can sign up through the registration form and API. * If disabled, new user registrations will be prevented, but existing users can still sign in. You might want to disable the signup form temporarily for maintenance or to control user influx. ### Phone Number Collection Configure whether to collect phone numbers during user registration. **Available Options:** * **None**: Phone number collection is disabled for user registration * **Optional**: Users can optionally provide their phone number * **Mandatory**: Phone number is required for registration **Phone Number Collection Purpose:** When phone number collection is enabled (Optional or Mandatory), you can provide a purpose statement that will be displayed to users during registration. * **Purpose**: Explain why you need to collect phone numbers * **Display**: This message will be shown to end users during registration * **Optional**: Leave blank to hide the explanation * **Recommended**: Explain the purpose to build trust and compliance This setting applies to new registrations only and does not affect existing user accounts. ### Disposable Email Domains Control whether users can register with disposable email addresses. * **Enabled**: Users can sign up with disposable email domains * **Disabled**: Registration with disposable email domains is blocked **Default Protection:** Aikeedo blocks 2500+ disposable email domains by default, and this list improves with each update to provide better protection against spam registrations. **Adding Additional Blocked Domains:** If you need to block additional disposable email domains, you can add them to the `/data/domains.txt` file: 1. Navigate to your Aikeedo installation directory 2. Open or create the `/data/domains.txt` file 3. Add each domain on a new line 4. Save the file These domains will be added to the default block list. This setting applies to new registrations only and does not affect existing user accounts. ### Owned Workspace Cap Limit the number of workspaces a user can own. * Enter a number to set the maximum limit * Leave blank or set to "Unlimited" for no limit * This helps control resource usage and prevents workspace spam ### Account Deletion Allow users to permanently delete their own accounts. * **Enabled**: Users see a **Danger zone** section on their account page where they can delete their account * **Disabled**: Only admins can delete user accounts from the admin panel When a user deletes their account: * They must confirm the action and enter their password (if they have one) * Subscriptions for all owned workspaces are cancelled * All owned workspaces and their data are permanently deleted * All personal data associated with the account is permanently deleted Account deletion cannot be undone. Admin accounts cannot delete themselves through self-service. ## Email Verification Policy The email verification policy determines how strictly your platform enforces email verification for new and existing users. You can choose from three levels of verification: 1. **None**: No email verification is required. * Users can access all features without verifying their email addresses. * This option provides the most frictionless user experience but offers the least security. 2. **Relaxed**: Users can sign in, but are encouraged to verify their email. * Users can access the platform without email verification. * An alert will be displayed on the dashboard indicating that the email is unverified. * This setting balances user convenience with a reminder to complete verification. 3. **Strict**: Email verification is mandatory before full platform access. * Users can sign in but cannot access any pages except account-related pages until they verify their email address. * This provides the highest level of security but may impact user onboarding. To enable email verification (for Relaxed and Strict policies), ensure you've configured your [mailer transport](/email/mailer) in the Email settings. The email verification policy does not apply to admin portal access. Admin accounts are managed separately for security reasons. ### OAuth Email Status Control how email verification is handled for OAuth (social login) users. **Available Options:** * **Ignore**: Email verification status from the identity provider will be ignored * **Auto**: Email will be marked as verified if verified by the identity provider * **Verified**: Email will be marked as verified when signing in through an identity provider even if it is not verified by the identity provider Each option offers different balances between user convenience and security, allowing you to tailor the policy to your platform's needs. ## Best Practices 1. **Regular Review**: Periodically review your account settings to ensure they align with your current security needs and user experience goals. 2. **User Communication**: If you make significant changes to these settings, consider notifying your users to avoid confusion. 3. **Testing**: After changing settings, test the user registration and login processes to ensure everything works as expected. 4. **Compliance**: Ensure your account settings comply with relevant data protection regulations in your jurisdiction. ## Related Guides * [Identity Providers](/authentication/identity-providers/google) - Set up third-party authentication options * [CAPTCHA](/authentication/captcha) - Add an extra layer of security to your forms * [Email Configuration](/email/mailer) - Set up your email system for notifications and verifications By carefully configuring these account settings, you can create a secure and user-friendly environment on your Aikeedo platform, tailored to your specific needs and user base. # CAPTCHA Protection Source: https://docs.aikeedo.com/authentication/captcha Protect your Aikeedo application from spam and abuse with CAPTCHA integration CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) is a crucial tool for protecting your Aikeedo application from spam and automated abuse. This guide focuses on setting up and configuring Google reCAPTCHA v2 Invisible, which is currently the supported CAPTCHA solution for Aikeedo. ## Current CAPTCHA Support At present, Aikeedo supports Google reCAPTCHA v2 Invisible. This powerful and user-friendly CAPTCHA solution offers robust protection without disrupting the user experience. While only Google reCAPTCHA is currently supported, Aikeedo may introduce additional CAPTCHA options in future updates. Stay tuned to our [changelog](https://aikeedo.com/changelog/) for the latest feature additions. ## What is Google reCAPTCHA? Google reCAPTCHA is a free service that helps protect websites from spam and abuse. reCAPTCHA v2 Invisible uses advanced risk analysis techniques to distinguish between humans and bots without requiring users to solve puzzles or click checkboxes. ## Benefits of Using reCAPTCHA * **Enhanced Security**: Safeguard your forms and user interactions from spam bots and malicious attacks. * **Flexible Security Settings**: Adjust protection levels based on your specific requirements and risk tolerance. ## Setting Up Google reCAPTCHA To integrate Google reCAPTCHA with your Aikeedo application: 1. **Register for reCAPTCHA**: * Go to the [Google reCAPTCHA Admin Console](https://www.google.com/recaptcha/admin). * Log in with your Google account. * Click the "+" button to add a new site. 2. **Configure reCAPTCHA settings**: * Enter a label for your site (e.g., your domain name) in the "Label" field. * For "reCAPTCHA type", select "Challenge (v2)". * Under the Challenge (v2) option, choose "Invisible reCAPTCHA badge". * In the "Domains" section, add your Aikeedo application's domain(s). * Under "Google Cloud Platform", you may see a project name if you've used Google Cloud before. If not, a new project will be created for you. Aikeedo is designed to work with the "Invisible reCAPTCHA badge" option. This provides security without disrupting the user experience. 3. **Complete the registration**: * Review your settings to ensure everything is correct. * Click the "Submit" button at the bottom of the page. 4. **Retrieve your Site Key and Secret Key**: * After submitting, you'll be provided with a Site Key and a Secret Key. * Keep these keys secure, as you'll need them to configure reCAPTCHA in Aikeedo. Never share your Secret Key publicly or include it in client-side code. Keep it confidential to maintain the security of your CAPTCHA implementation. ## Configuring CAPTCHA in Aikeedo Once you have your reCAPTCHA keys, enable and configure it in Aikeedo: 1. Access the Aikeedo admin panel. 2. Navigate to "Settings" > "User accounts" > "CAPTCHA". 3. Toggle on "Protect with Google reCAPTCHA". 4. Input your Site Key in the "Site key" field. 5. Enter your Secret Key in the "Secret key" field. 6. Click "Save changes" to apply the configuration. Never share your Secret Key publicly or include it in client-side code. Keep it confidential to maintain the security of your CAPTCHA implementation. ## Testing Your CAPTCHA Integration After setting up CAPTCHA, it's crucial to test its functionality: 1. Open a new incognito/private browsing window or use a different browser. 2. Navigate to your Aikeedo platform's public-facing pages. 3. Attempt actions that should be protected, such as user registration or login. 4. Confirm that the reCAPTCHA challenge activates when appropriate. It's important to test CAPTCHA integration without logging out of your admin account to avoid potential login issues. Using a separate browsing session ensures you can always access the admin panel if needed. ## Troubleshooting If you encounter issues with your CAPTCHA integration, consider these steps: * Verify that your Site Key and Secret Key are correctly entered in the Aikeedo settings. * Ensure your domain is properly listed in the Google reCAPTCHA admin console. * Check your browser console for any JavaScript errors related to reCAPTCHA. * Confirm that your server can communicate with Google's reCAPTCHA API servers. ## Additional Resources * [Google reCAPTCHA Documentation](https://developers.google.com/recaptcha/docs/invisible) * [reCAPTCHA FAQ](https://developers.google.com/recaptcha/docs/faq) # Facebook Identity Provider Source: https://docs.aikeedo.com/authentication/identity-providers/facebook Seamlessly integrate Facebook OAuth 2.0 authentication into your Aikeedo application, allowing users to log in with their Facebook accounts. This guide walks you through the setup process, from creating a Facebook App to configuring Aikeedo for a smooth "Login with Facebook" experience. ## Overview Integrating Facebook as an identity provider offers your users a convenient and secure way to access your Aikeedo application. This feature leverages Facebook's OAuth 2.0 protocol, ensuring a streamlined authentication process while maintaining high security standards. Before you begin, ensure you have admin access to your Aikeedo application and a Facebook Developer account for setting up the OAuth integration. ## Step-by-Step Integration Guide ### 1. Create a Facebook App 1. Visit the [Facebook for Developers](https://developers.facebook.com/) website. 2. Click on "My Apps" in the top-right corner. 3. Select "Create App" and choose the app type that best fits your needs (e.g., "Consumer" or "Business"). 4. Follow the prompts to set up your app, providing the necessary information. ### 2. Configure Facebook Login 1. In your app's dashboard, navigate to the "Add a Product" section. 2. Find "Facebook Login" and click "Set Up". 3. Choose "Web" as the platform for your app. 4. Enter your website's URL in the "Site URL" field. 5. Click "Save" and then "Continue". ### 3. Set Up OAuth Settings 1. In the left sidebar, click on "Facebook Login" > "Settings". 2. In the "Valid OAuth Redirect URIs" field, enter the callback URL provided by Aikeedo. Look for a click-to-copy feature in Aikeedo for easy access to the correct callback URL. The callback URL is automatically generated based on your Site Domain and SSL settings. To configure these, visit the [Website Essentials](/website-basics/essentials) page in your Aikeedo admin panel. 3. Scroll down and click "Save Changes". ### 4. Obtain App ID and App Secret 1. In the left sidebar, click on "Settings" > "Basic". 2. Here you'll find your "App ID" and "App Secret". You'll need these for Aikeedo configuration. Keep your App Secret confidential. Never share it publicly or include it in client-side code. ### 5. Configure Aikeedo 1. Log into your Aikeedo admin panel. 2. Navigate to **Settings > Identity providers > Facebook**. 3. Toggle the switch to enable "Login with Facebook". 4. Enter the "App ID" and "App Secret" obtained from your Facebook App. 5. Click "Save changes" to apply your configuration. ## Testing Your Integration After completing the setup, it's crucial to test the integration to ensure a smooth user experience: 1. Log out of your Aikeedo application. 2. On the login page, look for the "Login with Facebook" option. 3. Click the option and proceed through the Facebook authentication flow. 4. Verify that you can successfully log in and access your Aikeedo account. If you encounter any issues during testing, double-check your configuration settings in both the Facebook Developer Console and Aikeedo admin panel. ## Video Tutorial For a visual guide through this process, check out our step-by-step video tutorial: