Moodle + Expression Engine Integration + eCommerce - expressionengine

A client I am beginning to work with has a very specific need that I can't seem to find the best solution too nor any definitive yes or no because of conflicting answers in forums and documentation.
Goal: We are looking to use Moodle to handle the clients course management and course subscriptions. While using EE for other content as well as a store and cart to manage course related materials and supplies that will not be sold through Moodle.
Requirement: A synchronous cart so that if a student purchases a subscription to a course, they can also purchase any materials from the EE store in one go.
Upon doing my research I have found one piece that can help: aMember, but I cannot find a definitive Yes or No to these things:
Is Single Sign On between EE, Moodle, and aMember possible?
Is the cart functionality possible?
I apologize if this question is out of place here, but I'd very much like an answer because many of the proposed solutions have a relatively high cost if they don't work.
Any one here dealt with this kind of integration before?

I've never tried to integrate with Moodle or any other third party, but I know you'd have to create a way for the two to talk to each other. Would you use Moodle as the root authentication method? EE? I'm not sure which approach would work best. You can learn more about how to create that integration by browsing the EE add-on development documentation.
Also, depending on what your goals are, you may not need aMember at all. Take a look at Membrr, which excels at managing membership subscriptions. CartThrob and Brilliant Retail are two popular ecommerce add-ons for EE, and they're worth checking out, too.
Sorry I couldn't be more targeted with my answers. Hopefully someone with more experience can chime in as well. Best of luck!

I just completed a full EE/Moodle integration and would love to share how I did it. In a quick overview, We are using EE and CarthThrob to manage the purchases of the actual courses and Moodle for course delivery. What I ended up doing was a bit complicated but hopefully this will point you in the right direction.
Courses are sold through the EE site. When they're sold, I have a table that is populated on the cartthrob_on_authorize hook to populate a table with email address, role (student) and course id. I run a cron through Moodle to do remote enrollment so it will grab that data and enroll the student. This works both ways so if you delete a row from the table in EE, it will also un-enroll the student in Moodle.
I am using Moodle's user sync to pull in all of my EE users into Moodle on a cron job as well as using their remote authentication. One issue is that Moodle only offers SHA1 and MD5 out of the box so I had to modify their remote login script to first query the salt and then do a SHA512 hash of the salt and password for it to authenticate. What this does is allow users to log into Moodle using their EE credentials and creates the record to enroll the students against.
The biggest caveat is that you essentially have two different accounts on two systems and since EE stores its user data across multiple tables, you can't easily pull in data like First Name, Last Name so moodle prompts for this information (again) before taking a course. Not a great solution but it works. I am sure there are ways you could get around this (create an enrollment table that has all of this data in it to sync against Moodle with an EE extension).
Hope that helps move things in the right direction if you're still trying to do this.

We have created a solution close to what you are looking for in WordPress. Here we integrate Moodle with WooCommerce, an ecommerce solution for WordPress, to sell Moodle courses online.
Other features include:
Automatic registration to Moodle LMS
Single Login Credentials for registered users
Export Customer Information from WooCommerce
You can read indepth about the features here. http://wisdmlabs.com/woocommerce-moodle-integration-solution/

Related

How do you automatically create Web Stories from text and images in a database?

I want to bulk create thousands of web stories (of the AMP/Google variety) using a standardized AMP web stories template populated with text and images from my database.
Anyone have any ideas? I am not a coder, but may be able to follow if you assume I know nothing :) Thanks for your consideration and time.
I have looked in GitHub and at several online services that provide tools to make web stories, but none offer it. VisualStories claims to offer an API that does this, but when I asked for paid access said they were not sharing this with customers anymore because they found that creating stories individually produced better results.
Thanks!
Michael

Why do services provide a list of recovery codes for two factor authentication instead of just one?

The title pretty much says it all. I am currently implementing two factor authentication and wonder whether I should provide a list of recovery codes. I wouldn't even have thought of it myself, but most implementations I have seen in the wild do it this way. Github for example generates a list of 16 recovery codes at once.
Is there any security benefit?
Great question - I'm pretty sure it's an ease of implementation thing for both parties - if you generate a list of recovery codes up front then you don't have to regenerate a code every time a user uses a backup code. The idea is that the user will print/save them somewhere so from a usability perspective this saves the user from having to re-print or re-save codes.
You don't have to use recovery codes, though. GitHub supports a few different recovery options. Some companies use security questions or allow you to fall back to SMS.
Some companies make you call support and provide account details (works for enterprise use cases where there's a trusted contact/if you expect to have a small number of account recovery cases/have a good way of verifying identity over the phone [disclaimer I wrote that post for Twilio]).
Facebook lets you choose friends to vouch for your identity if you get locked out.
I gave a talk about this last year and have some more recommendations in the slides. Hope this helps!

Relationship between company-user and employee-users

I am trying to building a sales-system with the MEAN-stack but got stuck right in the beginning because I cannot find what I'm looking for on Google. I've been searching for days with no answers. Now to the problem.
Many companies should be able to create an account on the website. When x company is logged in they should be able to create an account for every employee on the company. These employee accounts should be able to create sales, show statistics on their monthly-sales etc. Somehow I have to have a relationship between x company with their employee accounts to display all the data from all employees on the company account.
I know there are tons of people who have done something similar. I cannot find what I am searching for because I do not know what to google. If someone knows what phrase I should search for, please reply.
Thanks for taking your time, happy coding!
May I suggest an open-source solution to creating a SaaS project. It has this functionality built-in. You can simply set up a tenant (Company x) in your own admin panel, and the company can add their own users/roles/permissions to applications inside of their own dashboards. You can add applications to your project and enable them to certain tenants (companies) that you wish (in a modular fashion). Companies' data would also be split in their own separate databases, and you can simply update each application by itself (so essentially you update code once, but data is still separated between users).
I have just started using this platform about two weeks ago on my own SaaS startup, and I am very excited in what it can offer. It's called Innomatic and you can check it out at their website: innomatic.io .
It does seem as if they haven't been giving the project much attention lately, but it does work nevertheless, and you can just maintain your own Applications within the platform.
If you have any questions I would be happy to help you , since I have spent the last two weeks getting the ropes of this platform.

Integrating 3rd-party forum software to member-based website

When using some existing forum software in a larger web-site, how easy is it to:
1)Make your site's login functionality log the user into the forum
2)Make your site's registration functionality create forum login data
I suppose in a way it might be easier to ONLY use the forum's database for maintaining users, but that means trusting it with sensitive data.
I'm planning an integration between an existing bespoke desktop app and a new bespoke web-site which should include forums. I don't know which forums will be used but I know the new web functionality won't be PHP-based. I figure that's not a big deal but I'm wondering if forums typically allow configuration of where they look for login data, to avoid duplicating this data into my DB and the forum DB.
It's usually pretty easy, but it completely depends on the Forum software that you choose.
I've written systems in both PHP and ASP.Net (C#) that integrate with phpBB or vBulletin databases.
The login functionality is the easiest part to implement because the hash is stored in the DB (usually a salt will be too), and you just need to check one field to another and voila you can authenticate!
The registration of users is a little more difficult.
The way I did it was browsing through their source code to find out what SQL commands were necessary during the registration step.
So, depending on the forum software you choose, the difficulty will change, but overall it's not to difficult to make happen.
I would offer you snippets on how to integrate with PHPBB and VB, but since those are both PHP based, you said you weren't going to use them.
You are actually looking for a Single Sign On feature, that is integrated in several forum softwares, like Simple Machines and JForum for example.

How does your company do "Enterprise" Password Management?

We've talked about personal password management here but how do you guys manage your passwords at a company wide level?
I thought I'd report back after my week of searching...
I've settled on PassPack I've been using it for a few days now for my personal passwords and I'm a total fanboy.
They use the Host-Proof Hosting pattern so the only one that can access your stuff is you and if you forget your password they can't help you.
They have some nice Offline apps written with Adobe AIR and Google Gears.
But, best of all, they fit my "enterprise" requirement because an upcoming release will support sharing within a trusted group.
Plus, I learned about The "Blog" of "Unnecessary" Quotation Marks in their forum.
We have managed to plan our company applications so they are mainly web based and open source or in-house developed. This then allowed us to use LDAP to hook into active directory for logging into our intranet. From there we modified the logins into various products we use (MediaWiki, Wordpress, SugarCRM etc.) so that if the user is authenticated in the intranet, they are automatically logged into these other products as well.
This has taken some time setting up the process and creating a script to set all the appropriate user details in each system when someone joins the company, however now we have a situation where everyone only has to remember one password, removing the need for managing a growing list of passwords.
Obviously this may not be viable in many companies, but now that we have it setup it was worth the effort.
We use Password Agent: http://www.moonsoftware.com/pwagent.asp
It stores everything from PC admin logins to website logins and product keys for products we all use.
We use Active Directory to store user credentials, and developed custom library for Desktop and Web
We are using KeePass application with success.
We create file per project and/or per business domain.
We share the password to appropriate KeePass file between people who should have access.
It's not the best solution. We also have Cyber-Ark software installed corporate-wide, but due to some strange configuration rules it does not work for us as good as the previous solution. It might be also related to the fact that we have an old version.
We maintain an in-house Lotus Notes database that stores absolutely everything from passwords to server change records. It is big, cumbersome, takes an age to load, and is generally not, uh, nice.
No, this is not a sane way to do it. :-|
Obviously I'm biased because I work there, but we use Enterprise Random Password Manager from Lieberman Software. Yes, we do actually dogfood our own tool in our own network. It has some nice features, like web accessibility with delegation, scheduled operation with retry, propagation to other things using accounts (services, COM+ apps, etc.), system/account discovery, Linux/Unix account management, etc.
I'm sure a salesperson could give a better pitch, but that I am not. I'd encourage you to check it out. :)
For passwords related to my work, I store them in a plain unencrypted passwords.txt file in my user storage area on the main company file server. Normally, other people in the company can't read files in my user storage area, so there is little risk of exposure. However, if something were to happen to me, then all my passwords for company related activities would be trivially available to others inside the company - just ask MIS.
This is a very different security model than what I use for my personal passwords, of course.
Just a heads up: Microsoft have a product managing credentials/passwords/identity across varied systems: Identity Lifecycle Manager
Secret Server is something that grew from an internal need (within our software company) to a viable product that is now used all over the world. It is web-based and allows you to store passwords and then securely share them with other users and groups (even AD users and groups). It is also able to actively reach out and change passwords on automatic schedules, even handling associated dependencies such as Windows Services for service accounts.
Enterprise Password Management (free 30 day trial).
Use Apache Directory Server, which is an LDAP-standard implementation.
You can manage the directory database using Apache Directory Studio so it's quite user friendly (or at least, admin-friendly).
Then you can hook the directory programmatically to any application that requires access to the credentials, LDAP client libraries are widely available on popular programming platforms such as Java, C++, PHP, Ruby, etc.
My business friend adviced me to check out Passwork (https://passwork.me). They use self-hosted version on own servers, i found out that Passwork also has SaaS.
So i and my colleagues store our company passwords in Passwork.
We had tried another enterprise pw managers before but weren't able to trust them.
We had a look at a product that had these features:
Can give access privleges to password using roles.
Handles delegation.
Logs access to passwords.
Can Randomize passwords.
Can automatically re-randomize a password X days after access to it.
Unfortunately, I can't couldn't it's name when I posted this... It was "Secret Server"

Resources