public async Task LoginAutoLoginFromHeadersInvalidEncoding()
        {
            ISettingsProvider       settingsProvider        = new pm.DefaultSettingProvider(Directory.GetCurrentDirectory());
            LoginControllerSettings loginControllerSettings = settingsProvider.GetSettings <LoginControllerSettings>(nameof(LoginPlugin));

            TestHttpRequest  httpRequest  = new TestHttpRequest();
            TestHttpResponse httpResponse = new TestHttpResponse();

            IPluginClassesService pluginServices = new pm.PluginServices(_testPluginLogin) as IPluginClassesService;
            TestHttpContext       httpContext    = new TestHttpContext(httpRequest, httpResponse);

            httpRequest.SetContext(httpContext);
            MockLoginProvider loginProvider = new MockLoginProvider();

            MockClaimsProvider        claimsProvider        = new MockClaimsProvider(pluginServices);
            TestAuthenticationService authenticationService = new TestAuthenticationService();
            RequestDelegate           requestDelegate       = async(context) => { await Task.Delay(0); };

            httpRequest.Headers.Add(SharedPluginFeatures.Constants.HeaderAuthorizationName, "Basic blahblahblah");

            LoginMiddleware login = new LoginMiddleware(requestDelegate, loginProvider, settingsProvider,
                                                        claimsProvider);

            await login.Invoke(httpContext, authenticationService);

            Assert.AreEqual(400, httpContext.Response.StatusCode);
            Assert.IsFalse(authenticationService.SignInAsyncCalled);
        }
        public async Task LoginAutoLoginFromHeadersInvalidUsernameAndPassword()
        {
            ISettingsProvider       settingsProvider        = new pm.DefaultSettingProvider(Directory.GetCurrentDirectory());
            LoginControllerSettings loginControllerSettings = settingsProvider.GetSettings <LoginControllerSettings>(nameof(LoginPlugin));

            TestHttpRequest  httpRequest  = new TestHttpRequest();
            TestHttpResponse httpResponse = new TestHttpResponse();

            IPluginClassesService pluginServices = new pm.PluginServices(_testPluginLogin) as IPluginClassesService;
            TestHttpContext       httpContext    = new TestHttpContext(httpRequest, httpResponse);

            httpRequest.SetContext(httpContext);
            MockLoginProvider loginProvider = new MockLoginProvider();

            MockClaimsProvider        claimsProvider        = new MockClaimsProvider(pluginServices);
            TestAuthenticationService authenticationService = new TestAuthenticationService();
            RequestDelegate           requestDelegate       = async(context) => { await Task.Delay(0); };

            string encoded = Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes("Miley:Cyrus"));

            httpRequest.Headers.Add(SharedPluginFeatures.Constants.HeaderAuthorizationName, "Basic " + encoded);

            LoginMiddleware login = new LoginMiddleware(requestDelegate, loginProvider, settingsProvider,
                                                        claimsProvider);

            await login.Invoke(httpContext, authenticationService);

            Assert.IsFalse(authenticationService.SignInAsyncCalled);
        }
        public async Task LoginFromCookieValueCookieValidLoginUserFound()
        {
            ISettingsProvider           settingsProvider        = new pm.DefaultSettingProvider(Directory.GetCurrentDirectory());
            LoginControllerSettings     loginControllerSettings = settingsProvider.GetSettings <LoginControllerSettings>(nameof(LoginPlugin));
            TestRequestCookieCollection cookies = new TestRequestCookieCollection();

            cookies.AddCookie("RememberMe", Shared.Utilities.Encrypt("123", loginControllerSettings.EncryptionKey));

            TestHttpRequest  httpRequest  = new TestHttpRequest(cookies);
            TestHttpResponse httpResponse = new TestHttpResponse();

            IPluginClassesService pluginServices = new pm.PluginServices(_testPluginLogin) as IPluginClassesService;
            TestHttpContext       httpContext    = new TestHttpContext(httpRequest, httpResponse);

            httpRequest.SetContext(httpContext);
            MockLoginProvider loginProvider = new MockLoginProvider();

            MockClaimsProvider        claimsProvider        = new MockClaimsProvider(pluginServices);
            TestAuthenticationService authenticationService = new TestAuthenticationService();
            RequestDelegate           requestDelegate       = async(context) => { await Task.Delay(0); };

            LoginMiddleware login = new LoginMiddleware(requestDelegate, loginProvider, settingsProvider,
                                                        claimsProvider);

            await login.Invoke(httpContext, authenticationService);

            TestResponseCookies responseCookies = httpResponse.Cookies as TestResponseCookies;

            Assert.IsNotNull(responseCookies);
            Assert.IsTrue(authenticationService.SignInAsyncCalled);
        }
Exemple #4
0
        public JsonResult TryLogOut()
        {
            var id = HttpContext.LoginId();

            if (id > 0)
            {
                LoginMiddleware.LogOutUser(id);
            }
            CookieUtils.Set(HttpContext, "login", null);
            return(new JsonResult(new { isLoggedOut = true }));
        }
        public void LoginNullSettingsProviderValue()
        {
            IPluginClassesService pluginServices = new pm.PluginServices(_testPluginLogin) as IPluginClassesService;
            MockLoginProvider     loginProvider  = new MockLoginProvider();

            MockClaimsProvider claimsProvider  = new MockClaimsProvider(pluginServices);
            RequestDelegate    requestDelegate = async(context) => { await Task.Delay(0); };

            LoginMiddleware login = new LoginMiddleware(requestDelegate, loginProvider, null,
                                                        claimsProvider);
        }
        public void LoginNullLoginProviderValue()
        {
            IPluginClassesService pluginServices = new pm.PluginServices(_testPluginLogin) as IPluginClassesService;

            ISettingsProvider  settingsProvider = new pm.DefaultSettingProvider(Directory.GetCurrentDirectory());
            MockClaimsProvider claimsProvider   = new MockClaimsProvider(pluginServices);
            RequestDelegate    requestDelegate  = async(context) => { await Task.Delay(0); };

            LoginMiddleware login = new LoginMiddleware(requestDelegate, null, settingsProvider,
                                                        claimsProvider);
        }
        public void LoginNullRequestDelegateValue()
        {
            IPluginClassesService pluginServices = new pm.PluginServices(_testPluginLogin) as IPluginClassesService;
            MockLoginProvider     loginProvider  = new MockLoginProvider();

            ISettingsProvider  settingsProvider = new pm.DefaultSettingProvider(Directory.GetCurrentDirectory());
            MockClaimsProvider claimsProvider   = new MockClaimsProvider(pluginServices);

            LoginMiddleware login = new LoginMiddleware(null, loginProvider, settingsProvider,
                                                        claimsProvider);
        }
        public async Task LoginNullContextValue()
        {
            IPluginClassesService pluginServices = new pm.PluginServices(_testPluginLogin) as IPluginClassesService;
            MockLoginProvider     loginProvider  = new MockLoginProvider();

            ISettingsProvider         settingsProvider      = new pm.DefaultSettingProvider(Directory.GetCurrentDirectory());
            MockClaimsProvider        claimsProvider        = new MockClaimsProvider(pluginServices);
            TestAuthenticationService authenticationService = new TestAuthenticationService();
            RequestDelegate           requestDelegate       = async(context) => { await Task.Delay(0); };

            LoginMiddleware login = new LoginMiddleware(requestDelegate, loginProvider, settingsProvider,
                                                        claimsProvider);

            await login.Invoke(null, authenticationService);
        }
Exemple #9
0
 public JsonResult TryLogin(string name, string password)
 {
     using (var c = new WebChat())
     {
         var toLogin = c
                       .Users
                       .Where(u => u.Login.Equals(name) &&
                              BCrypt.Net.BCrypt.Verify(password, u.Password)
                              );
         if (toLogin.Count() != 1)
         {
             return(new JsonResult(new { isLogged = false }));
         }
         return(new JsonResult(new
         {
             isLogged = HttpContext.LoginId() == 0 &&
                        LoginMiddleware.LogUser(HttpContext, toLogin.Single().Id)
         }));
     }
 }
Exemple #10
0
 private static void SetClearingThread(int id)
 {
     new Thread(async() =>
     {
         Thread.Sleep(2000);
         if (!LoginMiddleware.WebSockets.ContainsKey(id) || LoginMiddleware.WebSockets[id].State != WebSocketState.Open)
         {
             LoginMiddleware.LogOutUser(id);
             Console.WriteLine($"User {id} logged out.");
             var msg = JsonConvert.SerializeObject(new { id, type = "logout" });
             foreach (var ws in LoginMiddleware.WebSockets)
             {
                 await ws.Value.SendAsync(Encoding.UTF8.GetBytes(msg), WebSocketMessageType.Text, true,
                                          CancellationToken.None);
             }
         }
     })
     {
         IsBackground = true
     }.Start();
 }
        public async void LoginNullAuthenticationValueOnInvoke()
        {
            TestRequestCookieCollection cookies = new TestRequestCookieCollection();

            cookies.AddCookie("RememberMe", "1");

            TestHttpRequest  httpRequest  = new TestHttpRequest(cookies);
            TestHttpResponse httpResponse = new TestHttpResponse();

            IPluginClassesService pluginServices = new pm.PluginServices(_testPluginLogin) as IPluginClassesService;
            TestHttpContext       httpContext    = new TestHttpContext(httpRequest, httpResponse);
            MockLoginProvider     loginProvider  = new MockLoginProvider();

            ISettingsProvider  settingsProvider = new pm.DefaultSettingProvider(Directory.GetCurrentDirectory());
            MockClaimsProvider claimsProvider   = new MockClaimsProvider(pluginServices);
            RequestDelegate    requestDelegate  = async(context) => { await Task.Delay(0); };

            LoginMiddleware login = new LoginMiddleware(requestDelegate, loginProvider, settingsProvider,
                                                        claimsProvider);

            await login.Invoke(httpContext, null);
        }
Exemple #12
0
        public JsonResult TryRegister(string login, string password, string name, string email, string phone)
        {
            if (HttpContext.LoginId() == 0)
            {
                using (var c = new WebChat())
                {
                    var toLogin = c
                                  .Users
                                  .Where(u => u.Login.Equals(login));
                    if (toLogin.Count() != 0)
                    {
                        return(new JsonResult(new { isLogged = false }));
                    }
                    var user = new Users
                    {
                        CreationDate = DateTime.Now,
                        Login        = login,
                        Password     = BCrypt.Net.BCrypt.HashPassword(password),
                        Nickname     = name,
                        Email        = email,
                        Phone        = phone
                    };
                    c.Users.Add(user);
                    c.SaveChanges();
                }

                using (var c = new WebChat())
                {
                    var user = c.Users.First(u => u.Login.Equals(login));
                    return(new JsonResult(new
                    {
                        isLogged = LoginMiddleware.LogUser(HttpContext, user.Id)
                    }));
                }
            }
            return(new JsonResult(new { isLogged = false }));
        }