Exemple #1
0
        public async Task <int> AzioniInsert(AzioniDto azioniDto)
        {
            try
            {
                if ((azioniDto.AzioneTipo != "login_ko" && azioniDto.AzioneTipo != "login_ok" && azioniDto.AzioneTipo != "logout_user"))
                {
                    var data = await _unitOfWork.Azioni.FindByAzioniAsync(x => x.AzioneCliId.Equals(azioniDto.AzioneCliId) &&
                                                                          x.AzioneUteId.Equals(azioniDto.AzioneUteId), 0);


                    if (((DateTime.Now - data.AzioneInsTimestamp).TotalSeconds > 7200))
                    {
                        throw new UnauthorizedAccessException("Token Expired");
                    }
                }


                // Model class mapping from AzioniDto to Azioni.
                var azioni = _mapper.Map <AzioniDto, Azioni>(azioniDto);
                azioni.AzioneInsTimestamp = DateTime.Now;
                azioni.AzioneModTimestamp = DateTime.Now;
                azioni.AzioneInizio       = DateTime.Now;

                _unitOfWork.Azioni.Add(azioni);
                int logid = await _unitOfWork.CompleteAsync();

                return(logid);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        public AzioniDto GetAzioniDtoObject(ClaimsPrincipal User, string azioniTipo, string azioniDesc)
        {
            AzioniDto azioniDto = new AzioniDto();

            azioniDto.AzioneTipo        = azioniTipo;
            azioniDto.AzioneDescrizione = azioniDesc;
            var uteId = User.Claims.FirstOrDefault(x => x.Type.Equals("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"))?.Value;

            azioniDto.AzioneUteId    = uteId;
            azioniDto.AzioneInsUteId = uteId;
            azioniDto.AzioneModUteId = uteId;
            azioniDto.AzioneCliId    = User.Claims.FirstOrDefault(x => x.Type.Equals("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/sid"))?.Value;
            azioniDto.AzioneInizio   = DateTime.Now;
            return(azioniDto);
        }
Exemple #3
0
        public async Task <AzioniDto> GetAzioniData(string cliId, string uteId, int noOfSkip)
        {
            try
            {
                Azioni azioni = await _unitOfWork.Azioni.FindByAzioniAsync(x => x.AzioneCliId.Equals(cliId) &&
                                                                           x.AzioneUteId.Equals(uteId) &&
                                                                           x.AzioneTipo == "login_ok", noOfSkip);

                AzioniDto azioniDto = _mapper.Map <Azioni, AzioniDto>(azioni);
                return(azioniDto);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public AzioniDto CreateAzioniObj(string desc, string tipo, string uteId, string cliId, string utePass)
        {
            if (tipo == "login_ko")
            {
                uteId = "system";
            }
            AzioniDto azioniDto = new AzioniDto();

            azioniDto.AzioneDescrizione = desc;
            azioniDto.AzioneTipo        = tipo;
            azioniDto.AzioneDettaglio01 = uteId;
            azioniDto.AzioneDettaglio02 = utePass;
            azioniDto.AzioneDettaglio03 = cliId;
            azioniDto.AzioneUteId       = uteId;
            azioniDto.AzioneInsUteId    = uteId;
            azioniDto.AzioneModUteId    = uteId;
            azioniDto.AzioneCliId       = cliId;
            return(azioniDto);
        }
        public async Task <IActionResult> postAzioni([FromBody] AzioniDto azioniDto)
        {
            try
            {
                if (azioniDto == null)
                {
                    return(NotFound());
                }
                await _azioniManager.AzioniInsert(azioniDto);

                return(Ok());
            }
            catch (Exception x)
            {
                // Code block of Exception handling and logging into log_operazione table.
                var errorObj = await _utilityManager.ReturnErrorObj(x, User, "Insert Azioni");

                // Returning the error object.
                return(BadRequest(errorObj));
            }
        }
        public async Task <IActionResult> Login([FromBody] UserLoginDto user)
        {
            if (!ModelState.IsValid)
            {
                return(NotFound(ModelState));
            }

            try
            {
                var tipo = "login_ok";
                // Check user valid or not
                var checkuser = await _authManager.ValidateUserAsync(user);

                HttpContext httpContext = this.HttpContext;
                var         ip          = httpContext.Connection.RemoteIpAddress.ToString();

                // Getting the browser name
                var        userAgent = httpContext.Request.Headers["User-Agent"];
                string     uaString  = Convert.ToString(userAgent[0]);
                var        uaParser  = Parser.GetDefault();
                ClientInfo c         = uaParser.Parse(uaString);

                var description = $"IP -> {ip} . Client -> {c.UA} . OS -> {c.OS}";

                var       authHeader = Request.Headers["Authorization"].ToString();
                AzioniDto azioniDto  = CreateAzioniObj(description, tipo, user.UteId, user.UteCliId, user.UtePassword);


                if (checkuser.UteId == null)
                {
                    tipo      = "login_ko";
                    azioniDto = CreateAzioniObj(description, tipo, user.UteId, user.UteCliId, user.UtePassword);

                    await _azioniManager.AzioniInsert(azioniDto);

                    var result = new
                    {
                        error      = "Login failed",
                        error_type = "usrmsg_err",
                        message    = "L1008_wrongcredentials"
                    };
                    return(BadRequest(result));
                }
                // Find out five times failed login attempts
                var userHas5FailedAttempts = await _authManager.Has5ConsecutiveFailedAttemptsWithin5Miniutes(checkuser.UteId);

                if (userHas5FailedAttempts)
                {
                    await _authManager.LockUser(user.UteId);

                    tipo      = "login_ko";
                    azioniDto = CreateAzioniObj(description, tipo, user.UteId, user.UteCliId, user.UtePassword);
                    await _azioniManager.AzioniInsert(azioniDto);

                    var result = new
                    {
                        error      = "Login failed",
                        error_type = "usrmsg_err",
                        message    = "L1002_userLocked"
                    };
                    return(BadRequest(result));
                }
                // Checking whether the user status is active or not
                if (checkuser.UteAttivo == "N")
                {
                    tipo      = "login_ko";
                    azioniDto = CreateAzioniObj(description, tipo, user.UteId, user.UteCliId, user.UtePassword);
                    await _azioniManager.AzioniInsert(azioniDto);

                    var result = new
                    {
                        error      = "Login failed",
                        error_type = "usrmsg_err",
                        message    = "L1001_userInactive"
                    };
                    return(BadRequest(result));
                }

                await _azioniManager.AzioniInsert(azioniDto);

                HttpContext.Session.SetObjectAsJson("userDto", checkuser);

                var userProfile = await _userManager.FindUserProfileData(user.UteId, user.UteCliId);

                return(Ok(new { Token = checkuser.Token, userAuthList = checkuser.userAuthList, Email = checkuser.UteMail, UserProfile = userProfile }));
            }
            catch (Exception x)
            {
                // Code block of Exception handling and logging into log_operazione table.
                var errorObj = await _utilityManager.ReturnErrorObj(x, User, "login_ko");

                // Returning the error object.
                return(BadRequest(errorObj));
            }
        }