예제 #1
0
        public async Task LoginUser()
        {
            var mediator = ServiceProvider.GetService <IMediator>();

            var userAgent = new UserAgentModel
            {
                UserAgent       = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
                Browser         = "Chrome",
                DeviceBrand     = "",
                DeviceFamily    = "Other",
                DeviceModel     = "",
                OperatingSystem = "Windows 10",
                IpAddress       = "127.0.0.1"
            };

            var request = new TokenRequest
            {
                GrantType = "password",
                ClientId  = "UnitTest",
                UserName  = "******",
                Password  = "******"
            };

            var command = new AuthenticateCommand(userAgent, request);
            var result  = await mediator.Send(command).ConfigureAwait(false);
        }
예제 #2
0
        public async Task UploadMaterials()
        {
            var mediator = ServiceProvider.GetService <IMediator>();

            mediator.Should().NotBeNull();

            var files = File.OpenRead(@"E:\logo.png");

            files.Should().NotBeNull();

            var userAgent = new UserAgentModel
            {
                UserAgent       = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
                Browser         = "Chrome",
                DeviceBrand     = "",
                DeviceFamily    = "Other",
                DeviceModel     = "",
                OperatingSystem = "Windows 10",
                IpAddress       = "127.0.0.1"
            };
            var courseMaterial = new CreateCourseMaterialModel
            {
                // FileUpload = files,
                //Name = files.Name,
            };
            var uploadCommand = new CourseMaterialCommand(userAgent, courseMaterial);
            var result        = await mediator.Send(uploadCommand).ConfigureAwait(false);

            result.Should().NotBeNull();
        }
예제 #3
0
        public static UserAgentModel UserAgent(this HttpRequest httpRequest)
        {
            var model = new UserAgentModel();

            if (httpRequest == null)
            {
                return(model);
            }

            model.IpAddress = httpRequest.HttpContext.Connection.RemoteIpAddress.ToString();
            model.UserAgent = httpRequest.Headers["User-Agent"].ToString();

            if (string.IsNullOrEmpty(model.UserAgent))
            {
                return(model);
            }

            var uaParser   = Parser.GetDefault();
            var clientInfo = uaParser.Parse(model.UserAgent);

            model.Browser         = clientInfo.UserAgent.Family;
            model.DeviceBrand     = clientInfo.Device.Brand;
            model.DeviceFamily    = clientInfo.Device.Family;
            model.DeviceModel     = clientInfo.Device.Model;
            model.OperatingSystem = clientInfo.OS.Family;

            return(model);
        }
 public TrainingVideoUpdateCommand(TKey id, TUpdateModel model, IPrincipal principal,
                                   UserAgentModel userAgent) : base(id, model, principal)
 {
     TrainingVideo = model;
     Id            = id;
     UserAgent     = userAgent;
 }
예제 #5
0
 private UserAgentModel GetUserAgents()
 {
     string         useragent = _accessor.HttpContext.Request.Headers[HeaderNames.UserAgent].ToString();
     UserAgentModel result    = new UserAgentModel(useragent);
     {
         return(result);
     }
 }
예제 #6
0
        /// <summary>
        /// Get user and browser information from request
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static UserAgentModel GetUserAgentInformationFromRequest(this HttpRequest request)
        {
            var userAgentInformation = new UserAgentModel();

            if (request != null)
            {
                userAgentInformation = new UserAgentModel
                {
                    Platform            = request.Browser.Platform,
                    OsVersion           = GetOsVersion(request.UserAgent),
                    BrowserName         = request.Browser.Browser,
                    BrowserType         = request.Browser.Type,
                    BrowserVersion      = request.Browser.Version,
                    MajorVersion        = request.Browser.MajorVersion,
                    MinorVersion        = request.Browser.MinorVersion,
                    IsBeta              = request.Browser.Beta,
                    IsCrawler           = request.Browser.Crawler,
                    IsAOL               = request.Browser.AOL,
                    IsWin16             = request.Browser.Win16,
                    IsWin32             = request.Browser.Win32,
                    SupportsFrames      = request.Browser.Frames,
                    SupportsTables      = request.Browser.Tables,
                    SupportsCookies     = request.Browser.Cookies,
                    SupportsVBScript    = request.Browser.VBScript,
                    SupportsJavaScript  = request.Browser.EcmaScriptVersion.ToString(),
                    SupportsJavaApplets = request.Browser.JavaApplets,
                    JavaScriptVersion   = request.Browser["JavaScriptVersion"],
                    RawAgentString      = request.UserAgent
                };

                #region IP Address

                //Checking the forward header
                if (!string.IsNullOrEmpty(request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
                {
                    var      ipAddress = request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                    string[] addresses = ipAddress.Split(',');
                    if (addresses.Length != 0)
                    {
                        userAgentInformation.IpAddress = addresses[0];
                    }
                }
                //Check if the request is from Incapsula service
                else if (!string.IsNullOrEmpty(request.ServerVariables["HTTP_INCAP_CLIENT_IP"]))
                {
                    userAgentInformation.IpAddress = request.ServerVariables["HTTP_INCAP_CLIENT_IP"];
                }
                else
                {
                    userAgentInformation.IpAddress = request.UserHostAddress;
                }

                #endregion
            }

            return(userAgentInformation);
        }
        private async Task <TokenResponse> CreateToken(UserAgentModel userAgent, string clientId, string userName, string password, bool verifyPassword)
        {
            var user = await _dataContext.Users.Include(x => x.UserProfiles)
                       .GetByEmailAddressAsync(userName)
                       .ConfigureAwait(false);

            try
            {
                if (user == null)
                {
                    Logger.LogWarning($"User name or password is incorrect; UserName: {userName}");
                    throw new AuthenticationException(TokenConstants.Errors.InvalidGrant, "The user name or password is incorrect");
                }

                await ValidateUser(user, password, verifyPassword).ConfigureAwait(false);
            }
            catch (AuthenticationException ex)
            {
                await CreateHistory(userAgent, userName, user, ex).ConfigureAwait(false);

                throw;
            }

            await CreateHistory(userAgent, userName, user).ConfigureAwait(false);

            var claimsIdentity = await CreateIdentity(user).ConfigureAwait(false);

            var accessToken = CreateAccessToken(claimsIdentity);

            var refreshToken = await CreateRefreshToken(clientId, userName, user.Id).ConfigureAwait(false);

            user.LastLogin = DateTime.UtcNow;

            await _dataContext.SaveChangesAsync().ConfigureAwait(false);

            var response = new TokenResponse
            {
                AccessToken  = accessToken,
                ExpiresIn    = (int)_principalOptions.Value.TokenExpire.TotalSeconds,
                RefreshToken = refreshToken
            };

            return(response);
        }
        private async Task CreateHistory(UserAgentModel userAgent, string userName, Data.Entities.User user, Exception exception = null)
        {
            var history = new UserLogin
            {
                UserId          = user?.Id,
                EmailAddress    = userName,
                Browser         = userAgent.Browser,
                DeviceBrand     = userAgent.DeviceBrand,
                DeviceFamily    = userAgent.DeviceFamily,
                DeviceModel     = userAgent.DeviceModel,
                IpAddress       = userAgent.IpAddress,
                OperatingSystem = userAgent.OperatingSystem,
                UserAgent       = userAgent.UserAgent,
                IsSuccessful    = exception == null,
                FailureMessage  = exception?.Message
            };

            await _dataContext.UserLogins.AddAsync(history).ConfigureAwait(false);

            await _dataContext.SaveChangesAsync().ConfigureAwait(false);
        }
 public static string BuildUserAgentJson()
 {
     try
     {
         string                     osInfo    = $"Windows10/{SystemInfoHelper.SystemVersion}/{SystemInfoHelper.DeviceManufacturer}/{SystemInfoHelper.DeviceModel}";
         string                     sdkInfo   = $"{SystemInfoHelper.SdkVersion}";
         string                     appInfo   = $"{SystemInfoHelper.PackageName}/{SystemInfoHelper.ApplicationName}/{SystemInfoHelper.ApplicationVersion}";
         UserAgentModel             userAgent = new UserAgentModel(osInfo, sdkInfo, appInfo);
         MemoryStream               stream1   = new MemoryStream();
         DataContractJsonSerializer ser       = new DataContractJsonSerializer(typeof(UserAgentModel));
         ser.WriteObject(stream1, userAgent);
         stream1.Position = 0;
         StreamReader sr       = new StreamReader(stream1);
         var          content  = sr.ReadToEnd();
         var          filtered = content.Replace("\\/", "/");
         return(filtered);
     }
     catch (Exception)
     {
         return(string.Empty);
     }
 }
예제 #10
0
 public PayFortCommand(UserAgentModel userAgent, PayFortRequest payFortRequest, string coreAssembly)
 {
     UserAgent      = userAgent;
     PayFortRequest = payFortRequest;
     CoreAssembly   = coreAssembly;
 }
 public CourseMaterialCommand(UserAgentModel userAgent, CreateCourseMaterialModel courseMaterial)
 {
     CourseMaterial = courseMaterial;
     UserAgent      = userAgent;
 }
예제 #12
0
 public LevelBestVideoCommand(TCreateModel model, UserAgentModel userAgent) : base(model, null)
 {
     Model          = model;
     UserAgentModel = userAgent;
 }
예제 #13
0
 public AuthenticateCommand(UserAgentModel userAgent, TokenRequest tokenRequest)
 {
     UserAgent    = userAgent;
     TokenRequest = tokenRequest;
 }
 public CourseMaterialCommand(TCreateModel model, UserAgentModel userAgent) : base(model, null)
 {
     Model = model;
     UserAgentModel = userAgent;
 }
예제 #15
0
 public UserManagementCommand(TUserModel model, IPrincipal principal, UserAgentModel userAgent) : base(model, principal)
 {
     UserAgent = userAgent;
 }
예제 #16
0
 public EvaluationVideoCommand(TCreateModel model, UserAgentModel userAgent) : base(model, null)
 {
     Model          = model;
     UserAgentModel = userAgent;
 }
예제 #17
0
        public static IUserAgentModel ReadUserAgent(this HttpRequest httpRequest)
        {
            var model = new UserAgentModel();

            return(ReadUserAgent(httpRequest, model));
        }
예제 #18
0
 public TrainingVideoCommand(TCreateModel model, UserAgentModel userAgent) : base(model, null)
 {
     Model          = model;
     UserAgentModel = userAgent;
 }