Beispiel #1
0
        public async Task <IActionResult> Post([FromBody] Login login)
        {
            // Try to find the login information.
            var loginData =
                await
                _context.Login.FirstOrDefaultAsync(
                    a => String.Equals(a.Username, login.Username, StringComparison.CurrentCultureIgnoreCase));

            // User may not exist.
            if (loginData == null)
            {
                return(HttpBadRequest("Incorrect Username/Password"));
            }

            // Get the client information.
            var client = await _context.Client.FirstOrDefaultAsync(e => e.Id == loginData.IdClient);

            // Client doesn't exist or it is 'Deleted'.
            if (client == null || client.Active == false)
            {
                return(HttpBadRequest("Incorrect Username/Password"));
            }

            // Verify credentials.
            var isValidLogin = _loginHelper.IsValidLogin(loginData.Password, loginData.Salt, login.Password);

            if (isValidLogin == false)
            {
                return(HttpBadRequest("Incorrect Username/Password"));
            }

            var clientRole = (Enums.ClientRole)client.IdClientRole;
            var response   = new AuthResponse
            {
                Id               = client.Id,
                Name             = client.Name,
                AuthToken        = GetClientToken(clientRole),
                CanManageClients = GetClientPermissions(clientRole)
            };

            return(Ok(response));
        }