I have raised this issue before, so my apologies, but this is my last attempt!
I am trying to build an intranet where thousands of employees could create,edit and publish documents to the site.
These documents will be fairly simple (possibly one rich text field and a few other simpler fields).
I want to treat them as Umbraco back-end documents (rather than say data in separate SQL tables) so they can be included in partial views.
There will be other, more complex documents but these will be managed by a smaller number of back-end users, so that is fine.
I don't believe it is correct to treat the thousands of employees as users as I have read this will cause performance issues.
Therefore, before giving up, my last thought - suggested by others - is to create them as members, create a few front end pages that include forms, and they then submit these forms to a new controller that can check their membership and use the API to create, edit and/or publish the document submitted,
They should only be able to edit documents created by themselves, so the controller would need to know who the logged in member is (and compare that to the membership id I would store on all documents as creator).
Is this possible? Is it ok, or would it affect performance/security?
If it is possible, can I just upload controllers and views to the App_Code folder without compiling and uploading dlls etc?
Finally, I believe it is possible to authenticate members based on their Windows (Active Directory) log in?
Sorry for asking so many questions and many thanks to anyone who can help.
1) Yes, members is the better choice I think for your intranet scenario, Umbraco membership is designed to give identity to visitors to a website, whereas Users access the back office in order to update the website content.
In terms of performance, alot depends on how your intranet is used, so if every ten seconds a member in the company uploads and shares a new document/information with the rest of the company, then almost anything will be slow! - but if it's one or two documents a day, performance will be fine...
2) Yes you can just add custom controllers to your app_code folder and they will compile on the fly, views you add to the views folder - one thing to consider if you are trying to avoid coding too much, as your previous posts may suggest, is to take a look at Umbraco Forms -
this is a paid for add in (a few hundred euros) and would enable you to create forms with a drag and drop designer, and add the forms to your intranet pages. Umbraco forms has built in workflow actions after the form has been submitted that will automatically create Umbraco Content nodes, which would suit your aims for having members create backoffice Umbraco content.
3) Yes, Umbraco membership is built on top of the Asp.Net Membership provider, and is pluggable so it's perfectly possible to create your own custom membership provider to authenticate with an AD, usually we setup an 'automatic login page' so visitors to the intranet site are span out to a 'fake login' page, that triggers the authentication - via the AD - reads their User.Identity.Name, and then creates them as Umbraco Members via the MemberService, and then logs them into the site with forms authentication, but the actual authentication is via the AD. Theres a good article about extending membership here: http://24days.in/umbraco/2015/extending-membership/
Thank you for a comprehensive and excellent answer.
So Umbraco forms would allow members to create document nodes? I am guessing it doesn't allow editing of existing nodes, so that may not work for us.
If not, I could create a controller that would automatically be aware of which member is logged in (ie it can access member id ) and could then use the api to create/edit/publish?
If not, I could create a controller that would automatically be aware of which member is logged in (ie it can access member id ) and could then use the api to create/edit/publish?
Yes, you can add your custom logic to Umbraco forms. Read more:
Yes umbraco forms might be a curve ball for you what you are trying to do, I was just trying to think of what you might be able to achieve without writing a line of code.
But yes I have built wiki-like functionality before where the Members of the site can add and update the content, that is stored in Umbraco... using custom forms/controllers and the contentservice api.
But yes I have built wiki-like functionality before where the Members
of the site can add and update the content, that is stored in
Umbraco... using custom forms/controllers and the contentservice api.
Sorry, I can't, not easily, it's baked into a client's project :-(
One thing might be of interest though, is taking a look at the official certification courses: (disclaimer I run the one day courses in the UK) - In particular the Umbraco, Mvc and Visual Studio course where the hands on solution we work with, has the functionality to edit Umbraco nodes via the front end of the site; using SurfaceControllers to handle the form posts, and the Content Service API to create and update Umbraco content.
Thousands of editors...
I have raised this issue before, so my apologies, but this is my last attempt!
I am trying to build an intranet where thousands of employees could create,edit and publish documents to the site.
These documents will be fairly simple (possibly one rich text field and a few other simpler fields).
I want to treat them as Umbraco back-end documents (rather than say data in separate SQL tables) so they can be included in partial views.
There will be other, more complex documents but these will be managed by a smaller number of back-end users, so that is fine.
I don't believe it is correct to treat the thousands of employees as users as I have read this will cause performance issues.
Therefore, before giving up, my last thought - suggested by others - is to create them as members, create a few front end pages that include forms, and they then submit these forms to a new controller that can check their membership and use the API to create, edit and/or publish the document submitted,
They should only be able to edit documents created by themselves, so the controller would need to know who the logged in member is (and compare that to the membership id I would store on all documents as creator).
Is this possible? Is it ok, or would it affect performance/security?
If it is possible, can I just upload controllers and views to the App_Code folder without compiling and uploading dlls etc?
Finally, I believe it is possible to authenticate members based on their Windows (Active Directory) log in?
Sorry for asking so many questions and many thanks to anyone who can help.
Hi Tim
1) Yes, members is the better choice I think for your intranet scenario, Umbraco membership is designed to give identity to visitors to a website, whereas Users access the back office in order to update the website content.
In terms of performance, alot depends on how your intranet is used, so if every ten seconds a member in the company uploads and shares a new document/information with the rest of the company, then almost anything will be slow! - but if it's one or two documents a day, performance will be fine...
2) Yes you can just add custom controllers to your app_code folder and they will compile on the fly, views you add to the views folder - one thing to consider if you are trying to avoid coding too much, as your previous posts may suggest, is to take a look at Umbraco Forms -
https://our.umbraco.org/projects/developer-tools/umbraco-forms/
this is a paid for add in (a few hundred euros) and would enable you to create forms with a drag and drop designer, and add the forms to your intranet pages. Umbraco forms has built in workflow actions after the form has been submitted that will automatically create Umbraco Content nodes, which would suit your aims for having members create backoffice Umbraco content.
3) Yes, Umbraco membership is built on top of the Asp.Net Membership provider, and is pluggable so it's perfectly possible to create your own custom membership provider to authenticate with an AD, usually we setup an 'automatic login page' so visitors to the intranet site are span out to a 'fake login' page, that triggers the authentication - via the AD - reads their User.Identity.Name, and then creates them as Umbraco Members via the MemberService, and then logs them into the site with forms authentication, but the actual authentication is via the AD. Theres a good article about extending membership here: http://24days.in/umbraco/2015/extending-membership/
regards
Marc
Marc
Thank you for a comprehensive and excellent answer.
So Umbraco forms would allow members to create document nodes? I am guessing it doesn't allow editing of existing nodes, so that may not work for us.
If not, I could create a controller that would automatically be aware of which member is logged in (ie it can access member id ) and could then use the api to create/edit/publish?
Thanks again
If not, I could create a controller that would automatically be aware of which member is logged in (ie it can access member id ) and could then use the api to create/edit/publish?
Yes, you can add your custom logic to Umbraco forms. Read more:
https://our.umbraco.org/documentation/products/umbracoforms/developer/extending/adding-a-workflowtype
Hi Tim
Yes umbraco forms might be a curve ball for you what you are trying to do, I was just trying to think of what you might be able to achieve without writing a line of code.
But yes I have built wiki-like functionality before where the Members of the site can add and update the content, that is stored in Umbraco... using custom forms/controllers and the contentservice api.
regards
Marc
Could you share?... ;-)
Hi Tim
Sorry, I can't, not easily, it's baked into a client's project :-(
One thing might be of interest though, is taking a look at the official certification courses: (disclaimer I run the one day courses in the UK) - In particular the Umbraco, Mvc and Visual Studio course where the hands on solution we work with, has the functionality to edit Umbraco nodes via the front end of the site; using SurfaceControllers to handle the form posts, and the Content Service API to create and update Umbraco content.
http://umbraco.com/products-and-support/training/level-2-course/
These episodes on Umbraco TV: http://umbraco.tv/videos/umbraco-v7/developer/fundamentals/surface-controllers/introduction/ and http://umbraco.tv/videos/umbraco-v7/developer/fundamentals/content-api/introduction/
will give you a good idea of the work involved
regards
Marc
is working on a reply...