Category Archives: Technical

GrasslandRemoteMembershipProvider to manage user accounts centrally

Users having multiple Grassland Systems from GNey are common. For example, a front end web based, online application for public as well as customer, and internally few modules serves different purposes such as Inventory Control, Invoicing and separate business flow module such as Shop Flow System etc. For the benefits and conveniences of the users, it will be great to have a single centrally account management, having to remember only single username and password, you can login to different systems using the same account and get you exactly the right roles.

Of course it can be done through ActiveDirectory, however not many Small and Medium Enterprise having the budget to implement them throughout the company as well as more often than not these computers are commonly shared or even sometimes using their own personal laptop. Besides, there is still the need to manage the roles separately for different modules.

This is where GrasslandRemoteMembershipProvider comes in. It is actually based on WCF communication to connect the central account server. The great flexibility of WCF channel offers the possibility the connection from desktop based application or web-based application or even shared hosting website or mobile application.

Of course since it is authentication, encryption has to be done properly for security purposes.

facebooktwittergoogle_plusredditpinterestlinkedinmail

Screen Capture Tools for Grassland

A quick guide: Grassland System is built using .NET framework WPF and C#.
Making full use of WPF strength through MVVM and PRISM as well as Dependency Injection.

First, we need a drawing canvas which allow user to put annotation and this canvas will be superimposed on existing Grassland window. However canvas must be collapsed for most of the time as it will block user interaction to the window if it is on top of the interface.

Then, it is Event for triggering, Grassland System uses EventAggregator from PRISM to send events within the system. Drawing canvas will subscribe to several events related to show/hide canvas, undo as well as redraw events etc.

That’s it. We are done for the drawing canvas module, now it is the time to make good use of it!

Previously the Feedback system is only through text and send via WCF to our Grassland Service and then it get converted into email and send to Grassland Dev. Now, this will be improved. Feedback System will sending events to trigger canvas module allow user to freehand drawing on our Window then capture the screenshot and send via the same channel together with screenshots to us.

Yes, there are few things we plan in the future, like typing, multiple screenshot and one more thing: currently it is only available for main window. In future it is likely to be incorporated into all windows.

Done for the improved feedback to be delivered. But wait, we got some ideas, we can use it internally for producing screenshot as well and we can develop it fast.

We have been using SlowCheetah together with PRISM for quite sometime. So in our debug environment, SlowCheetah helps to add development-needed-only module configuration to our app.config and PRISM will then initialize them during debug session. This helps us a lot we have like a module to checking whether there is need generate sample data for us and of course a ‘Development’ module to fast forward some steps when debug run like login with certain credentials, go to certain views or perform certain tasks. This save great time for Grassland Dev, we do not need to repeat the same task everytime we press ‘Debug’. Ok, ‘Development’ will be the right candidate for this ‘Screencapture’ tool. The plan is have it open along when in debug mode, and then we can take screenshoot as we want through send it to clipboard and save it to file.

The objective are clear now. The implementation is quite easy with modular design. By injecting the EventAggregator to send the right event, and then retrieve the screenshot. Finally we are done.

 

 

 

facebooktwittergoogle_plusredditpinterestlinkedinmail