aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/ViewModelLocator.cs
blob: 5034a4d906bfb7121f5a3de0bf5a36dd29a291f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using Tango.Core.DI;
using Tango.MachineStudio.Stubs.ViewModels;

namespace Tango.MachineStudio.Stubs
{
    /// <summary>
    /// This class contains static references to all the view models in the
    /// application and provides an entry point for the bindings.
    /// </summary>
    public static class ViewModelLocator
    {
        /// <summary>
        /// Initializes a new instance of the ViewModelLocator class.
        /// </summary>
        static ViewModelLocator()
        {
            TangoIOC.Default.Register<MainViewVM>();
        }

        public static MainViewVM MainViewVM
        {
            get
            {
                return TangoIOC.Default.GetInstance<MainViewVM>();
            }
        }
    }
}
Tango.Core.DI; using Tango.PPC.Common.Authentication; using Tango.PPC.Common.Navigation; namespace Tango.PPC.UI.Authentication { /// <summary> /// Represents the default PPC authentication provider. /// </summary> /// <seealso cref="Tango.Core.ExtendedObject" /> /// <seealso cref="Tango.PPC.Common.Authentication.IAuthenticationProvider" /> public class DefaultAuthenticationProvider : ExtendedObject, IAuthenticationProvider { /// <summary> /// Gets or sets the navigation manager. /// </summary> [TangoInject(TangoInjectMode.WhenAvailable)] public INavigationManager NavigationManager { get; set; } /// <summary> /// Occurs when the current logged-in user has changed. /// </summary> public event EventHandler<User> CurrentUserChanged; private User _currentUser; /// <summary> /// Gets the current logged-in user. /// </summary> public User CurrentUser { get { return _currentUser; } private set { _currentUser = value; RaisePropertyChangedAuto(); } } /// <summary> /// Performs a user login by the specified email and password. /// </summary> /// <param name="email">The email.</param> /// <param name="password">The password.</param> /// <returns></returns> public Task<User> Login(string email, string password) { return Task.Factory.StartNew<User>(() => { String hash = User.GetPasswordHash(password); LogManager.Log($"Logging in user {email}..."); using (var db = ObservablesContext.CreateDefault()) { CurrentUser = new UserBuilder(db).Set(x => x.Email.ToLower() == email && x.Password == hash) .WithOrganization() .WithRolesAndPermissions() .Build(); } if (CurrentUser != null) { LogManager.Log($"Current user is now: {CurrentUser.Contact.FullName}."); } else { LogManager.Log("Login failed!"); } CurrentUserChanged?.Invoke(this, CurrentUser); return CurrentUser; }); } /// <summary> /// Logs-out the current logged-in user. /// </summary> public void LogOut() { LogManager.Log("Logging out current user."); CurrentUser = null; CurrentUserChanged?.Invoke(this, CurrentUser); NavigationManager.NavigateTo(NavigationView.LoginView); } } }