Our blog contains the activity stream of Orchard Dojo: general news, new resources or tutorials are announced here.

Featured tags

IIS
API
SMS
SEO
All tags >

Add support for user phone number, SMS support and two-factor authentication using SMS service - This week in Orchard (25/08/2023)

Add support for user phone number; add styling to Pager in TheAdmin theme, and a demo about SMS support and two-factor authentication using SMS service! Check out our post for the details! Orchard Core updates Add support for user phone number Currently, we do not support PhoneNumber in the UserStore, which is supported in the default identity implementation, and it's a nice feature to have if you are implementing an application that requires the user to enter and confirm their cell phone number, similar to the way email verification works. The latter is easy since UserStore implements IUserEmailStore, but when using UserManager.GenerateChangePhoneNumberTokenAsync, the call fails with a NotSupportedException: Store does not implement IUserPhoneNumberStore<TUser> exception. From now on, UserStore implements IUserPhoneNumberStore, updating User accordingly by adding a Phone property. This means a phone number is now supported in the UserStore and the User object. Let's see what the new field looks like in the user's profile! If you navigate to Security -> Users and hit the Add User button, you will find the new Phone Number field there. You may notice a black exclamation icon at the end of the editor, meaning that the phone number for this user is unverified. Add styling to Pager in TheAdmin theme This change is about improving the look and feel of the Pager across the admin UI. New views in TheAdmin theme were added to style the pages at the theme level, no base shapes were altered. The pager looked like this: And after this change, it looks like this: Demos SMS support and two-factor authentication using SMS service In this demo, you can see a brand-new feature for Orchard Core, the SMS module. This module provides you with a way to have SMS services on your site, and then you can do whatever you want with them. There are actually three features around it, and we will check out all. SMS: Provides settings and services to send SMS messages. Two-Factor SMS Method: Provides users a two-factor authentication method through an SMS service. SMS Notifications: Provides a way to send SMS notifications to users. Let's enable all of them, and after that, you will find a new option under Configuration -> Settings, called SMS. Here you can configure your provider. You can choose from Log and Twilio. If you select the Log one, any message that is sent through the SMS provider will be just printed in the log files, like: "A message with the body {body} was set to {phoneNumber}". You can implement your own provider, but by default, we provide you with Twilio. Twilio is probably the most commonly used service. If you select it, you can configure it with the information that is coming from your Twilio account. So, this is the SMS module, and to build more on top of it, here comes the Two-Factor SMS Method feature. If you enable it, you can navigate to the Security settings, and add the new SMS authentication as a new two-factor authentication method. To do that, you have to verify your phone number, and you will get a verification code that you have to apply. The third feature is called SMS Notifications. With this module, you can actually deliver notifications through SMS. If you enable this and you can go to your user profile (Security -> Users), you will see another notification method here which is called SMS Notifications. And if you have the Workflows feature enabled, you can utilize a new task, called Send SMS, meaning you can send SMS messages directly from the workflow. If you want to know more about this feature, head to YouTube for a recording! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 520 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

IClientIpAddressAccessor interface, new Orchard Core site case study - This week in Orchard (11/08/2023)

Add a thumbnail to stereotype filter; IClientIpAddressAccessor an interface for accessing the client IP Address, and check out a case study of a new Orchard Core site using Orchard Core Commerce! Let's get started! Orchard Core updates Add thumbnail to stereotype filter In some cases, we want to create a menu item that would allow the user to manage content items of a specific stereotype. Currently, we only support single content types but not stereotypes. The goal of this change was to add a query parameter stereotype that would allow us to manage only content items that share the same given stereotype. We already mentioned this change a few weeks ago but from now on, this feature is more user-friendly because you can see a thumbnail about this filter inside the available filters list on the Manage Content page. You can reach this list if you click on the Filters icon near the Search textbox and select the Filter syntax from the drop-down menu. Add IClientIpAddressAccessor interface for accessing the client IP Address It can happen that you need to know the IP address of the client. For example, Orchard Core can save the client IP Address when logging events using the Audit Trail feature. From now on, you will see a new IClientIPAddressAccessor interface with a default implementation called DefaultClientIPAddressAccessor, which you can use to easily get the IP address of the client. News from the community Case study of a new Orchard Core site using Orchard Core Commerce DotNest is a SaaS provider that provides hosted Orchard Core and Orchard 1 web applications (think Wordpress.com for Orchard). This basically means that after registration you can create Orchard websites on DotNest without having to worry about hosting or maintenance. Orchard is always kept up-to-date and in good working order for you, you just have to use it. Several custom modules and themes are available for you on all Orchard Core DotNest sites. One of these is the Orchard Core Commerce module, which is the commerce module for the CMS containing features like handling taxation, shopping cart, and checkout. We published a case study about migrating the content of an old version of an Orchard Core website with a custom theme and modifications in the business logic of the Orchard Core Commerce module to DotNest. Check out this case study here to read more about how we achieved this with Ik wil een taart, a confectionery in the Netherlands! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 499 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

New Meta Pixel feature, Enhance the two-factor authentication process - This week in Orchard (14/07/2023)

New Meta Pixel feature, in progress indicator for the Attached Media field, and a demo about enhancing the two-factor authentication process and making the UI extensible. Check out our post for the details! Orchard Core updates New Meta Pixel feature We have multiple integrations with Meta. But we do not have a way to enable Meta Pixel like we do for Google Analytics. But what is Meta Pixel? The Meta pixel is a piece of code for your website that lets you measure, optimize and build audiences for your ad campaigns. You can think of this as an analytics tool that allows you to measure the effectiveness of your advertising by understanding the actions people take on your website. So, from now on a new feature called Meta Pixel was added to allow you to easily enable Meta Pixel tracking into your website. Due to Facebook's recent rebranding, all of the Facebook features have been renamed to Meta. This only concerns UI labels and documentation, but technical identifiers remain, so you shouldn't expect anything breaking like classes and project names still say Facebook to prevent breaking change. But how can you use this new feature? First of all, navigate to the admin UI of your site and enable the Meta Pixel feature under Configuration -> Features. This will show you a new option under Configuration -> Settings, called Meta Pixel, where you can provide the Pixel ID found on the Meta Data Sources portal. In progress indicator to the Attached Media field When you add a file to an attached media field, it uploads the file once you select it, but it does not indicate that it is uploading, so if you have a large file like audio or video that takes some time to upload, it looks like it just didn't add the file. This change introduces a progress bar showing you the current progress of the file, that you would like to upload. This PR also fixes an error about messages not showing in this editor, like the "This file exceeds the maximum upload size". To try out this feature, we just simply modified the content definition of the built-in Blog Post content type by adding a new Media Field to it. After we set the editor type of this field to Attached, instead of Standard. Finally, we edited the predefined blog post content item and tried to upload a file utilizing the newly added Media Field. Demos Enhance the two-factor authentication process and make the UI extensible A few weeks ago, we showed you a demo about adding the two-factor authentication feature to Orchard Core. This time we will see some improvements related to the 2FA feature. The first issue was the UI was not extensible, and we only have an authenticator app to use as a 2FA. Sometimes you might not want to use the authenticator app, you might want to authenticate users with other methods like email or SMS. From now on, we have a way to extend the 2FA in a way where we can say I want to enable the app authenticator, I want to enable an email authenticator, but you can implement your own authenticator, whatever the case might be. Let's see this in action! After you set up your site, head to Configuration -> Features and search for the two-factor keyword. This will list 3 features related to 2FA. Two-Factor Authentication Services: Provides Two-factor core services. Two-Factor Authenticator App Method: Provides users with a two-factor authentication method through any Authentication App. Two-Factor Email Method: Provides users with a two-factor authentication method through an Email service. For this demo, we will enable all of these features. Now, let's create another user in the system with the Contributor role for example. When we login with that user, we can navigate to the Security page (which you can reach under the /TwoFactor URL or by clicking on the Security option using the drop-down, which you can see if you click on the user icon on the top-right corner. Here you can see the site says two-factor authentication is not enabled yet, in order to enable it, you have to add a two-factor method. You can allow email authentication by clicking on the Verify Email button. You see this button here because this user hasn't verified their email address yet. If you click on this button you have to request a code, and this user will get a code via email, which they can paste here. After verification, the email address of this user has been confirmed, and the site displays the recovery codes to log in with. If you go back under the same screen under Security, you will see that the email is verified and 2FA is enabled because we have just enabled it. Let's quickly add a second method, which is the authenticator app. If you do that, you will have two authentication methods, and using the Preferred Two-Factor Method drop-down, you can select your preferred method. Let's select the Email one, for example. Now, let's log off and try to log in again to see what will happen. The first thing that you can see here is it's asking to authenticate via email. If for some reason, we don't have access to that email, there is a new option here called Sign in another way. You can also log in with your recovery codes if you have them. If you click on the Sign in another way link, it's prompting me to use the other method, which is the (non-default) app authenticator. The reason why we can use both methods is that we enabled the Two-Factor Authenticator App Method and Two-Factor Email Method features. And as we mentioned, from now on, you can implement your own method (SMS, for example) and can extend the list of the two-factor methods. And that's not nearly all of the improvements! If you want to know more about this feature, head to YouTube for a recording! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 474 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Google Service improvements, Lombiq Content Editors for Orchard Core - This week in Orchard (07/07/2023)

Fix Google Service dependencies and include Google Analytics and Tag Manager when the user consents. This week's demo is about the new Lombiq Content Editors for the Orchard Core module! Check out our post for the details! Orchard Core updates Fix Google Service dependencies Google Tag Manager (GTM) is a bridge/middle-man service, that would allow you to enable other services like Google Analytics on your website. So, if you have GTM installed on your website, you can use the GTM portal to enable Google Analytics using the Measurement ID. You can also enable Google Analytics without the use of GMT if you want. The two features OrchardCore.Google.TagManager and OrchardCore.Google.Analytics should not depend on each other as one should enable either. If you enable the Google Tag Manager feature by navigating to Configuration -> Features, you will find a new option under Configuration -> Settings. It is called Google Tag Manager, where you can specify the container ID defined in your Google Tag Manager account. Include Google Analytics and Tag Manager when the user consents And while we are talking about Google-related services, let's check out another improvement regarding Google-related services! The Google Analytics feature always includes the Google Analytics tracking script in GoogleAnalyticsFilter. Instead, it should only include this if the user gave consent to tracking otherwise, it's a legal risk under GDPR for EU companies. Potentially something similar for websites run by other entities around the world too. Fortunately, the built-in ASP.NET Core feature can be used for this, just by adding the below check to GoogleAnalyticsFilter. Demos Lombiq Content Editors for Orchard Core This time we will check out the Lombiq Content Editors for Orchard Core module. This feature was originally built for Orchard 1 a couple of years ago, and it contained a lot of interesting features for advanced content editing, including async editors, which we will focus on today. It was a closed-source module of Lombiq, and this is the rewritten version of that for Orchard Core. As we mentioned, the primary feature of this module is the Async Editor feature, which we already used when we built the License Request form for Smithsonian Folkways Recordings. We wrote a blog post about how we upgraded that site to Orchard Core, and you can also check out a demo video of the app and our experiences developing it here. So, the Async Editor feature of this module provides an infrastructure for creating editors that can load and save content asynchronously. The editor can optionally render multiple pages where each page can load and save data independently. To demonstrate this feature, we will utilize our Open-Source Orchard Core Extensions solution that contains most of Lombiq's open-source Orchard modules and themes, as well as related utilities and libraries. Last week we mentioned that this solution has been updated to the latest and greatest 1.6 Orchard Core version. If you clone this repository and set up your site using the TEST: Lombiq's Open-Source Orchard Core Extensions recipe, the Lombiq Content Editors - Samples feature will be enabled by default which - of course - contains samples for Lombiq Content Editors. Meaning that if you click on the Employee (admin) option from the Content Editors Samples drop-down menu after your site has been set up, you will be redirected to the admin UI of Orchard Core, where you will see an editor of the Employee content item. To be more precise, this is the first editor group (PersonalDetails) of this content item. If you fill out the first group and click Save and Next, it will post the form to the API and won't reload the page. The backend will validate the form, and then if everything goes right, it will show you the HTML code of the next editor group and load it to the editor. Once you click on the Submit button on the second editor group, the editor will publish the content item. You can see the editor groups with a nice name (Personal Details, Employment Details), which provides some pagination to you as well, so you can go back and forth by clicking on these. And of course, you can utilize the async editors on the front end as well, and a good example of that is the License Request form for Smithsonian Folkways Recordings that we have just mentioned. If you would like to know more about this feature, check out this video on YouTube where you can see some code as well. And don't forget to check out the samples module too, where you can find the code of the previously mentioned editor with tons of comments about how you can utilize this async editor in your own Orchard Core site! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 471 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Add stereotype as a filter for the contents UI, Updated Lombiq's Open-Source Orchard Core Extensions - This week in Orchard (30/06/2023)

Add stereotype as a filter for the contents UI, fix OpenID Configuration initialization and our Open-Source Orchard Core Extensions solution is updated to Orchard Core 1.6! Check out our post for the details! Orchard Core updates Add stereotype as a filter for the contents UI In some cases, we want to create a menu item that would allow the user to manage content items of a specific stereotype. Currently, we only support single content the type but not the stereotype. The goal of this change was to add a query parameter stereotype that would allow us to manage only content items that share the same given stereotype. To try this out, we have to have some content where the stereotype is defined. We will go the lazy way and edit the existing content definitions of the built-in content types defined by the Blog recipe. We can do that under Content -> Content Definition -> Content Types. We edited the definition of the Blog and the Article content type and set the stereotype value to Test. Now to be able to filter all the content items with the Test stereotype, let's navigate to Content -> Content Items and add the following query string to the URL: stereotype=Test, so the full URL in our case will be the following https://localhost:44300/Admin/Contents/ContentItems?stereotype=Test&admin=-327987887 And as you can see, Orchard Core shows us the content items of the content types where we set the stereotype to "Test". You can read more about this feature in the release notes of the 1.7 release of Orchard Core. Fix OpenId Configuration initialization When using the OpenId Server feature along with OpenId Validation and using a custom Authority value, the following exception was thrown: InvalidOperationException: The issuer attached to the static configuration must be the same as the one configured in the validation options. You can reproduce the issue by following these steps: Enable the OpenId Server and the Validation features. Set a new value in the Authority settings in server settings. The site becomes useless, and you'll get the above exception. And as you can see, the fix for this issue is quite interesting. But why would it work by applying these changes? Well, it's due to the fact the issuer comes from potentially multiple places: - The issuer configured in the validation options (options.Issuer).- The issuer attached to a static configuration (options.Configuration.Issuer).- The issuer attached to a dynamic configuration, retrieved using OIDC discovery (accessed via options.ConfigurationManager). Recent versions of OpenIddict use options.Issuer as the source of truth and now require that the issuer attached to a static configuration - which is the case when you target a "local" server - match the global value, options.Issuer. News from the community Updated Lombiq's Open-Source Orchard Core Extensions This is an Orchard Core Visual Studio solution that contains most of Lombiq's open-source Orchard modules and themes, as well as related utilities and libraries. Please keep in mind that only those extensions included that use the latest released version of Orchard (i.e., the very cutting-edge ones depending on a nightly build are not yet here). And now, this solution has been updated to the latest and greatest 1.6 Orchard Core version. Check them out here, and install them from NuGet or from the source! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 468 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

FeatureEventHandler base class, settings to create robots.txt file from site settings - This week in Orchard (23/06/2023)

Checking ListContent permission instead of IsListable in the Admin Menu, new FeatureEventHandler base class, demo about new settings to create robots.txt file from site settings, and announcing our brand new Lombiq.com site! Check out our post for the details! Orchard Core updates Check ListContent permission instead of IsListable in the Admin Menu Currently, if you want to add a content type to an admin menu, the content type would have to be listable in order to be visible. Sometimes, we want to show a content type item on the admin menu even when it is not listable. The Admin UI does not care if the content type is listable or not. All it checks for is whether the user has permission to ListContent. The logic in the admin menu should be the same as the UI. And you can easily try this out if the Admin Menu feature is enabled on your site under Configuration -> Features. But if you set up your site using the Blog recipe, you will get a predefined admin menu which you can configure from under Configuration -> Admin Menus. Here, click the Edit Nodes button near the predefined admin menu and select the Add Node button after. This will show you a modal window with the available Admin Nodes. Let's select the Content Types one, which will add a link for each one of the selected content types. And this Create Node page now will list all of the content types defined by the Blog recipe (because we logged in with the admin user), not just the ones, which are listable. FeatureEventHandler base class This addition is about adding a new FeatureEventHandler base class which implements the IFeatureEventHandler interface. The goal here was to not have to define all methods when implementing IFeatureEventHandler as we already have with ModularTenantEvents and IModularTenantEvents. This PR also applies this change to the current implementations, like for the MediaTokenSettingsUpdater and for the RoleUpdater. Demos Settings to create robots.txt file from site settings One of the challenges that we had was that the only way we can expose the robots.txt for the tenants is by placing the robots.txt file on the file system of each site or globally. There was no easy way to modify that file per tenant. This feature is about adding an ability to drive the content of the robots.txt file through settings by using a middleware allowing website owners to easily define the directives for search engine crawlers and other web robots accessing their site. Now it's time to try this one out! Let's use the nightly build packages of Orchard Core and set up your site using the Blog recipe, for example. Now, head to Configuration -> Features and enable the SEO module, which provides SEO meta-features. After that, you will see a new option under Configuration -> Settings, called SEO. If you navigate to this page, you will see some things set by default, which is to add a rule to allow web robots and then add a rule to disallow web robots to the admin routes. And those are on by default if you do not have a robots.txt file. In the Additional rules editor, you can specify your custom rules. If you have special rules, you can define them here. Now if we check out the content of the robots.txt file, we can simply navigate to https://localhost:44300/robots.txt, because we only have the default tenant right now. But of course, if we would create a tenant called the agency, you will be able to check out the content of the robots.txt file for that tenant as well under https://localhost:44300/agency/robots.txt, for example. And as you can see, the file is generated based on our settings. However, people might already be using the robots.txt file. So, we can't really override what they have. So, if they have this file in the file system and the Static File Provider feature is enabled, we're going to take that file and ignore our settings. Because otherwise, this would be a breaking change. Another thing is the added rules for the sitemaps. If you go to the Features page, enable the Sitemaps feature, and navigate back to the SEO settings page, you will see a checkbox here called Include all sitemaps. What this does is it checks all the sitemaps that you might have; if any exist, it will automatically include them. And that's not all of it! If you would like to know more about this feature, check out the documentation and head to YouTube for a recording! News from the community Renewed Lombiq.com website We launched our website when we started Lombiq, no less than 10 years ago. It was simple, clean, and functional, but it didn’t age well with upcoming trends and looks of modern websites. But now we can showcase our expertise and services in a more modern and user-friendly way. To reach our goal, we migrated from our old Orchard 1 website to Orchard Core and modernized our site's look. Our new site turned out great, and we are very happy with it. It represents who we are and what we do as a company. We hope you like it too! For our case study on building the renewed Lombiq.com, including migrating it from Orchard 1, check out "How We Renewed and Migrated lombiq.com from Orchard 1 to Orchard Core" in the Lombiq blog. And we also added our site to Show Orchard, which is an Orchard CMS showcase, displaying Orchard CMS (including Orchard 1 and Orchard Core) powered sites from around the web. If you are interested in more websites using Orchard and Orchard Core, don't forget to visit Show Orchard. Show Orchard is a website for showing representative Orchard CMS (and now Orchard Core) websites all around the internet. Ryan Drew Burnett started it, but since he doesn't work with Orchard anymore, as announced earlier, it is now maintained by our team at Lombiq Technologies. Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 467 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Orchard Core is in the Red Hat Ecosystem Catalog, Top-level Multi-Tenancy menu - This week in Orchard (09/06/2023)

New top-level Multi-Tenancy menu; adding docs about Common Part; and Orchard Core is now listed in the Red Hat Ecosystem Catalog. Check out our post for the details! Orchard Core updates Add top-level Multi-Tenancy menu Let's say you have an Orchard Core site where you already enabled the Tenants and the Tenant Feature Profiles features. By doing that you will have a set of functionalities that provides you with a way to manage tenants and their available features from the admin. These features are all related to multi-tenancy, related to tenants, and not to the other settings of the site where you can execute recipes, manage features or admin menus, and so on. So, this addition is about adding a new top-level menu called Multi-Tenancy and moving Tenants and Feature Profiles under the Multi-Tenancy menu. Add Common Part docs If you are not a newcomer to Orchard Core, you may know that the Common Part gives you the basics, like the owner and date-created fields. But in the past few days, someone asked a question on Twitter about how to do something, and the solution for the problem is to use the Common Part, which has some options that you can set to display the owner and the creation time, and so on. From now on, the Orchard Core Documentation site will contain a few lines about the Common Part. Orchard Core is in the Red Hat Ecosystem Catalog The Red Hat Ecosystem Catalog was built on Red Hat platforms and technologies with certified, enterprise-grade products you need to achieve your business outcomes. The developers of this catalog make it easy for you to explore and find certified products from this ample and robust ecosystem of enterprise hardware, software, and cloud and service providers. So, this is a catalog of software that is placed along their platforms. If you go there, you will find a lot of stuff here, but for .NET developers, there isn't much familiar here. These are like lower-level hosting/cloud/server-management applications mostly. There are some blogs and CMS systems, and the goal was to include Orchard Core in this catalog. Orchard should be compatible with Red Hat Enterprise Linux at least, and well, if we have it here, that's one more channel people can find Orchard. And that was the purpose of this GitHub issue, to improve Orchard's visibility in a circle where it's probably unknown, outside of the .NET community. And now we have Orchard Core listed in this catalog! And we also have a new page on the Orchard Core Documentation site about how you can manage the Orchard Core Red Hat Ecosystem Catalog certification! And if you would like to know more about this topic, check out this part of the community meeting! News from the community Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 465 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Elsa Workflows, Orchard Harvest Online - This week in Orchard (02/06/2023)

Thank you, everyone, for taking part in Orchard Harvest Online, and thanks to the presenters for their great presentations! Check out our current post for a short summary of the conference; a demo about Elsa Workflows and many more! Orchard Core updates Admin Dashboard widgets are not scrollable when the content is long Last week we mentioned several improvements regarding the Admin Dashboard and the Admin Dashboard widgets. And we have another improvement for this week too! Currently, the Admin Dashboard widgets are set to hide any horizontal and vertical overflow. This works well when you can control the content of your widget based on specifying the best height/width of each widget. Sometimes you may want to create a widget without being able to control the length. For example, recent contents/posts, most viewed contents, etc. All these examples of a widget with uncontrollable content. In that case, it does not make sense to hide the overflow content vertically. We can still hide the horizontal overflow and the widget since that is something each widget can design for. But the vertical overflow should be set to auto. You can reproduce this behavior easily by creating a widget that lists the last 10 content items and making the size and the width of the widget 1 x 1. That's what you can see on the left side of the screen. And as you can see, when setting the vertical overflow to auto, we get a scroll bar for the widgets when the content is larger than expected. Fix the notifier cookie path Let's say we have an Orchard Core site installed as an application under the default website in IIS. What this means is that we access the site with the following URL: https://localhost/orchard. The problem is that the notifier cookie uses the tenant prefix as the cookie path. For example: For the default tenant, https://localhost/orchard, the notifier cookie path is set to / when it should be set to /orchard. For another tenant, let's call it tenantA at https://localhost/orchard/tenantA, the notifier cookie path is set to /tenantA when it should be set to /orchard/tenantA. Technically, scenario 1 still works, since cookies with a path of / can still be seen by /orchard. Even though the path isn't exactly what it should be, the notification still appears. The problem is in scenario 2, since the cookie path is being set to /tenantA but /orchard/tenantA can't see that cookie, and the notification doesn't appear. After applying this fix, the notification works for tenantA using /orchard/tenantA. Demos Elsa Workflows Elsa Core is a workflow library that enables workflow execution in any .NET Core application. Workflows can be defined using code and using the visual workflow designer. We mention Else here because Elsa is an innovative workflow engine derived from Orchard Core's Workflows module. It was born from a requirement of a project where they didn't want to base it on Orchard Core, but they did want to have Workflows. So, the goal here was to create a reusable designer that you can host/use in your own dashboard application. In this demo, Sipke Schoorstra, one of the main contributors of Elsa shows you everything that you need to know about Elsa Workflows. Head to YouTube for this exciting demo! News from the community Orchard Harvest Online We had the first online Orchard Harvest last Wednesday, and it was so great to see that we had 188 sign-ups for the conference! It was an excellent opportunity to share knowledge, talk about development plans and ideas, and foremost, meet the rest of the worldwide community. The conference was started by a Keynote from Sébastien Ros and followed by a talk from Andrii Chebukin about how you can use Orchard Core Framework for multi-tenancy apps. After that, Zoltán Lehóczky showed us how you can use open-source tools in the following areas: CI builds, static code analysis, unit and UI testing, and telemetry collection. And just before the breakout sessions, you can see a great session by Peyton McManus about why they selected Orchard for their new application. How his team has leveraged Orchard to rebuild and re-imagine the application, and how they will continue to leverage Orchard for their set of features. In the breakout sessions, the attendees had a chance to meet the speakers and other community members. Each speaker had a breakout room where the attendees asked questions and discussed the topic of their talk, or anything else Orchard Core related. After the break, we could see a talk from Hisham Bin Ateya about exploring different parts of localization stuff in Orchard Core. After that, Dávid El-Saig described the Orchard Core Commerce project's state and showed the current features. And the last talk was from Sipke Schoorstra where he provided an overview of Elsa Workflows' features, compared it to Orchard Core Workflows, and discussed integration possibilities. And of course, we recorded every session, which means they will be available on YouTube soon! Don't forget to follow our This week in Orchard newsletter to be informed about the recordings! That was a blast! Thank you everyone for taking part and thanks to the presenters for their great presentations! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 464 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Admin Dashboard improvements, Two-factor Authentication - This week in Orchard (26/05/2023)

Check out our current post to read about the latest Admin Dashboard improvements and to see a demo about supporting two-factor authentication in Orchard Core! And don't forget that Orchard Harvest is just right around the corner! Orchard Core updates Show Admin Dashboard shape when Access Admin Dashboard permission is not granted Currently, when the Admin Dashboard feature is enabled, the /admin route is handled by the Index action in the DashboardController controller. This works great when the user has the Access Admin Dashboard permission. However, when they don't, they get the generic forbid error message. In some cases, we don't want to give the user access to the admin widgets but want them to still access the admin dashboard. In this case, they will not be able to see the dashboard unless they type the exact path they want to access in the browser. The solution here was the following: If the user does not have Access Admin Dashboard permission, instead of showing 401, we now render the AdminDashboard shape. When a Dashboard Widget is secured, we check the permission to ensure the user is able to view it before rendering it. This will give us the ability to control who gets to see which widget. To test this out, first of all, we need to enable the Admin Dashboard feature. After that, we modify the permissions of the Editor role by saying users with this role have no permission to access the Admin Dashboard. After that, we added an Html Dashboard Widget to be able to see something instead of the empty dashboard. On the left side of the screen, you can see what the admin user can see. They have the Access Admin Dashboard permission, and the previously created Html Dashboard Widget is visible to them. However, on the right side of the screen, we logged in with a user who has the Editor role. As you can see, Orchard renders the "Welcome to Orchard Core" alert to them, but they can't see the Dashboard Widget or the Dashboard itself. Do not auto-create a dummy content item when the Admin Dashboard feature is enabled When the Admin Dashboard feature is enabled for the first time, for some reason, we create a dummy dashboard item. There is no way to avoid this for new tenants currently. Maybe adding a content item by default is not a good idea because the admin will almost always have to remove it. This change is about removing the sample Orchard Core Admin Widget from the recipe. But if you are curious about this sample widget, you can still use it. If you navigate to Configuration -> Recipes you will find a recipe called Admin Dashboard Widget Sample. And if you execute this recipe, you will be able to see the sample widget in the dashboard again. And this change was also added to the change logs of the next upcoming release to notify everyone about this change. Demos Two-factor Authentication Now you can have new settings that allow you to enable two-factor authentication. To see how this works, navigate to Security -> Settings -> User Login, where you can see a new tab, called Two-factor Authentication. If you put a tick into the Enable two-factor authentication checkbox, you will see the related settings. You can enable 2FA for everyone, you can enable 2FA for users with specific roles, or you can say to remember the client, so you don't have to keep typing the code every single time on the same computer. The Show email address in the authenticator app allows you to display the email address on the authentication app, otherwise, we will show your username. And the Require two-factor authentication option allows you to force authentication. If you log in, you will be forced to use 2FA. Right now, let's enable 2FA just for the users with the Administrator role. This means you will have a new option in the dropdown menu if you click on the user icon in the top-right corner called Security. Here, you can set up your authenticator app by clicking on the Add authenticator app button. Here you can set up your authenticator app by following the steps mentioned. Pull up your phone, open up the authenticator app, scan the QR code, and provide the verification code. On the next screen, you can see your recovery codes which you can use to log in in case you lose your device. But of course, you can reset your recovery codes and also the authenticator app itself under the Security dropdown menu. Now if we log out and log back in, Orchard Core will ask us to provide that code after we typed the correct username and password. And as always, if you would like to know more about this feature (which you can try out right now if you are using the nightly builds of Orchard Core) head to YouTube for a recording! News from the community Orchard Harvest Online Program As many of you know, we have been working hard over the past months to organize the next Orchard Harvest in Las Vegas after the last Harvest in 2017. Unfortunately, based on the current economic situation and personal feedback, Las Vegas won’t work this year. Not to mention that unfortunately Microsoft Build, announced after we decided on our dates, also falls in line with the original dates we chose. So, a date change was also necessary. However, we did not want to let go of this opportunity to meet completely. Therefore, we are pleased to inform you that we will be holding our first online Orchard Harvest starting on the 31st of May at 13:00 UTC. Start your registration for the event right now. You can find the program of the conference on the official site of Orchard Core. See you next week! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 462 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!

Orchard Harvest Program, Tenant Clusters - This week in Orchard (19/05/2023)

Allow displaying an icon for Custom Settings, add Admin Culture Picker docs, demo about Tenant Clusters, and most importantly, the program of the Orchard Harvest is now available! Let's get started! Orchard Core updates Allow displaying an icon for Custom Settings You can create a setting using Custom Settings and set the item icon in the menu that came with it. It wasn't really possible before this change because the .Id(type.Name.HtmlClassify()) and .AddClass(type.Name.HtmlClassify()) weren't applied in the AdminMenu of the CustomSettings module meaning it was not possible to override this menu item with a shape named NavigationItemText-NAME_OF_SETTINGS.Id. From now on, the CustomSettings module allows us to set the icon of the newly added menu item. Add Admin Culture Picker docs A few weeks ago, we mentioned that you have the option to add an admin culture picker for the admin site and have a dropdown in the admin panel header to switch languages. And of course, when adding new features to Orchard Core, we always keep in mind the flexibility and the reusability that Orchard Core can provide to the developers. Meaning, you can override and customize the shapes which are responsible to display the admin culture picker. Now we have some lines in the documentation about the two shapes that are responsible for displaying the admin culture. Demos Tenant Clusters This demo is about a work-in-progress feature for Orchard Core that distributes requests across tenant clusters using Microsoft Yarp.ReverseProxy. If you check out the following recording, you can easily get up to speed with the current state of this upcoming feature. Here we want to highlight some of the more exciting parts of this addition: We first use the Yarp Configuration to define Routes and Clusters with many options. Each Route is tied to a Cluster composed of Destination(s) on which load balancing can be applied. We only need one catch-all RouteTemplate and multiple Clusters on which we can configure a custom SlotRange[min, max] property (up to 16384 slots). Each tenant has a unique slot hash, so a unique Slot then belongs to the Cluster having the slot in its SlotRange. The Cluster can have multiple Destination(s). We could have used a Cluster having Nodes, but we follow the Yarp Config having a Clusters list of Cluster type. The same application can run as a proxy or behind it (we check the headers), the advantage with our distributed services is when as a proxy we are still aware of all tenant's data. So, on a request, we can use the same RunningShellTable to know the tenant, then select the right Cluster based on the tenant slot hash (in a custom middleware), and let Yarp selects one of its Destination(s). To compute a tenant slot hash, we use the CRC-16/XMODEM algorithm (same as Redis uses for clustering keys) applied on the new TenantId property, which allows us to automatically spread out new tenants on the slots and then on the configured Clusters. This knowing that the CRC-16 is fast to compute and always returns the same number for the same TenantId, so a tenant stays on the same Cluster. News from the community Orchard Harvest Online Program As many of you know, we have been working hard over the past months to organize the next Orchard Harvest in Las Vegas after the last Harvest in 2017. Unfortunately, based on the current economic situation and personal feedback, Las Vegas won’t work this year. Not to mention that unfortunately Microsoft Build, announced after we decided on our dates, also falls in line with the original dates we chose. So, a date change was also necessary. However, we did not want to let go of this opportunity to meet completely. Therefore, we are pleased to inform you that we will be holding our first online Orchard Harvest starting on the 31st of May at 13:00 UTC. You can start your registration for the event right now. And in the meantime, the program of the conference is available on the official site of Orchard Core! Please welcome the below selection of awesome talks by community members! Orchard Dojo Newsletter Lombiq's Orchard Dojo Newsletter has 458 subscribers! We have started this newsletter to inform the community around Orchard of the latest news about the platform. By subscribing to this newsletter, you will get an e-mail whenever a new post is published to Orchard Dojo, including This week in Orchard of course. Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here! If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!