public AuthorizationViewModel(IUserRelatedRepository repo, IUserSession userSession)
        {
            Repository = repo;

            UserSession = userSession;

            LoginCommand = RegisterCommandAction(
                (obj) =>
            {
#if DEBUG
                AuthenticatedUser = Repository.FindUser("root");
                InputtedPassword  = "******";
#else
                AuthenticatedUser = Repository.FindUser(InputtedLogin);
#endif

                if (IsInputtedPasswordCorrect())
                {
                    RelatedView.Hide();

                    UserEvents.RaiseOnUserLoggedIn(AuthenticatedUser);

                    UserSession.AuthorizeUser(
                        AuthenticatedUser,
                        UserRightsBuilder.GetUserRights(
                            UserSession.GetAccessLevel(AuthenticatedUser)
                            )
                        );

                    _mainView             = new MainView();
                    _mainView.DataContext =
                        ResolveDependency <IMainViewModel>()
                        as MainViewModel;

                    _mainView.Show();
                }
                else
                {
                    MessageToUser = "******";
                }
            }
                );

            UserEvents.OnUserLoggedOut += () =>
            {
                _mainView.Hide();

                InputtedLogin = InputtedPassword = string.Empty;

                RelatedView.Show();
            };
        }