示例#1
0
        public async Task <IActionResult> InsertEmployee([FromBody] Darbinieks darbinieks)
        {
            if (darbinieks.Uznemums.Id == 0)
            {
                return(StatusCode(400, new { messages = new List <string> {
                                                 "Nepareizs uzņēmuma identifikators"
                                             } }));
            }
            if (!string.IsNullOrEmpty(darbinieks.Lietotajvards) && string.IsNullOrEmpty(darbinieks.Parole))
            {
                return(StatusCode(400, new { messages = new List <string> {
                                                 "Lietotājvārdam nav norādīta parole"
                                             } }));
            }
            if (string.IsNullOrEmpty(darbinieks.Lietotajvards) && !string.IsNullOrEmpty(darbinieks.Parole))
            {
                return(StatusCode(400, new { messages = new List <string> {
                                                 "Parolei nav norādīts lietotājvārds"
                                             } }));
            }

            var result = await _repository.InsertDarbinieksAsync(darbinieks);

            return(StatusCode(200, new { id = result.ToString(), message = "Izveidots jauns darbinieks" }));
        }
示例#2
0
        public async Task <int> InsertDarbinieksAsync(Darbinieks darbinieks)
        {
            if (!string.IsNullOrEmpty(darbinieks.Lietotajvards))
            {
                //pārbaudam vai lietotājvārds jau eksistē
                var exist = await GetDarbinieksByUserNameAsync(darbinieks.Lietotajvards);

                if (exist != null)
                {
                    throw new BadRequestException($"Lietotājvārds {darbinieks.Lietotajvards} jau eksistē");
                }

                //pārbaudam vai e-pasta adrese jau eksistē
                if (!string.IsNullOrEmpty(darbinieks.Epasts))
                {
                    var user = await _context.Darbinieki.AsNoTracking()
                               .Where(d => d.Epasts == darbinieks.Epasts)
                               .FirstOrDefaultAsync();

                    if (user != null)
                    {
                        throw new BadRequestException("Šāda e-pasta adrese jau eksistē");
                    }
                }

                var validateResult = PasswordValidator.Validate(darbinieks.Parole);
                if (validateResult != "OK")
                {
                    throw new BadRequestException(validateResult);
                }

                darbinieks.Parole = PasswordValidator.Encrypt(darbinieks.Parole, _settings.EncryptionKey);
            }
            else
            {
                darbinieks.Aktivs         = false;
                darbinieks.Administrators = false;
            }

            _memoryCache.Remove("EMPLOYEES-LIST");

            darbinieks.Uznemumi = new List <UznemumaDarbinieks> {
                new UznemumaDarbinieks {
                    UznemumaId = darbinieks.Uznemums.Id
                }
            };

            await _context.Darbinieki.AddAsync(darbinieks);

            await _context.SaveChangesAsync();

            return(darbinieks.Id);
        }
示例#3
0
        public async Task <IActionResult> UpdateEmployee([FromBody] Darbinieks darbinieks)
        {
            if (darbinieks.Uznemums.Id == 0)
            {
                return(StatusCode(400, new { messages = new List <string> {
                                                 "Nepareizs uzņēmuma identifikators"
                                             } }));
            }

            var result = await _repository.UpdateDarbinieksAsync(darbinieks);

            if (result > 0)
            {
                return(StatusCode(200, new { message = "Darbinieka dati atjaunināti" }));
            }
            return(StatusCode(200, new { message = "Nav izmaiņu ko saglabāt" }));
        }
示例#4
0
        public async Task <IActionResult> GetEmployee(int companyId, int employeeId)
        {
            if (employeeId == 0) // jauns darbinieks - atgriežam uzņēmuma datus
            {
                var emp = new Darbinieks
                {
                    Uznemums = await _repository.GetUznemumsForDarbinieksAsync(companyId)
                };
                if (emp.Uznemums == null)
                {
                    return(StatusCode(400, new { messages = new List <string> {
                                                     "Jaunā darbinieka uzņēmums netika atrasts"
                                                 } }));
                }
                return(StatusCode(200, new { employee = emp }));
            }

            var employee = await _repository.GetDarbinieksForEditAsync(companyId, employeeId);

            employee.Parole = string.IsNullOrEmpty(employee.Lietotajvards) ? null : "ok"; //paroli nesūtam
            return(Ok(new { employee = employee }));
        }
示例#5
0
        public async Task <IActionResult> Token()
        {
            if (!_httpContextAccessor.HttpContext.Request.HasFormContentType)
            {
                throw new BadRequestException("Content-Type jābūt application/x-www-form-urlencoded");
            }

            var grantType = _httpContextAccessor.HttpContext.Request.Form["grant_type"];

            if (grantType.Count == 0)
            {
                throw new BadRequestException("Nav norādīts parametrs grant_type");
            }

            Darbinieks user = null;

            if (grantType == "password")
            {
                var username = _httpContextAccessor.HttpContext.Request.Form["username"];
                if (username.Count == 0)
                {
                    throw new BadRequestException("Nav norādīts parametrs username");
                }
                var password = _httpContextAccessor.HttpContext.Request.Form["password"];
                if (password.Count == 0)
                {
                    throw new BadRequestException("Nav norādīts parametrs password");
                }

                user = await _service.ValidateCredentialsAsync(username, password);

                if (user == null)
                {
                    return(StatusCode(400, new { messages = new List <string> {
                                                     "Nepareizs lietotājvārds vai parole"
                                                 } }));
                }
                if (!user.Aktivs)
                {
                    return(StatusCode(400, new { messages = new List <string> {
                                                     "Jūsu konts ir bloķēts!"
                                                 } }));
                }
            }
            else if (grantType == "refresh_token")
            {
                var refreshToken = _httpContextAccessor.HttpContext.Request.Form["refresh_token"];
                if (refreshToken.Count == 0)
                {
                    throw new BadRequestException("Nav norādīts parametrs refresh_token");
                }

                user = await _service.ValidateRefreshTokenAsync(refreshToken);

                if (user == null)
                {
                    throw new BadRequestException("Nepareizs refresh_token");
                }
            }
            else
            {
                throw new BadRequestException("Nezināms grant_type");
            }

            var now        = DateTime.UtcNow;
            var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_settings.SecretKey));
            var expires    = TimeSpan.FromMinutes(_settings.Expiration);

            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, user.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(JwtRegisteredClaimNames.Iat, ToUnixEpochDate(now).ToString(), ClaimValueTypes.Integer64),
                new Claim("name", user.PilnsVards),
                new Claim("admin", user.Administrators ? "true" : "false")
            };

            var jwt = new JwtSecurityToken(
                issuer: _settings.Issuer,
                audience: _settings.Audience,
                claims: claims,
                notBefore: now,
                expires: now.Add(expires),
                signingCredentials: new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256));
            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

            return(StatusCode(200,
                              new
            {
                access_token = encodedJwt,
                expires_in = expires.TotalSeconds,
                refresh_token = user.RefreshToken,
                name = user.PilnsVards,
                admin = user.Administrators
            }));
        }
示例#6
0
        public async Task <int> UpdateDarbinieksAsync(Darbinieks darbinieks)
        {
            var needClearPassword = false;

            if (!string.IsNullOrEmpty(darbinieks.Lietotajvards))
            {
                //pārbaudam vai lietotājvārds jau eksistē - gadījumā ja tiek izmainīts
                var exist = await GetDarbinieksByUserNameAsync(darbinieks.Lietotajvards);

                if (exist != null && exist.Id != darbinieks.Id)
                {
                    throw new BadRequestException($"Lietotājvārds {darbinieks.Lietotajvards} jau eksistē");
                }
            }
            else
            {
                needClearPassword = true;
            }

            //pārbaudam vai e-pasta adrese jau eksistē
            if (!string.IsNullOrEmpty(darbinieks.Epasts))
            {
                var user = await _context.Darbinieki.Where(d => d.Id != darbinieks.Id && d.Epasts == darbinieks.Epasts).FirstOrDefaultAsync();

                if (user != null)
                {
                    throw new BadRequestException("Šāda e-pasta adrese jau eksistē");
                }
            }

            var oldDarbinieks = await _context.Darbinieki
                                .Where(d => d.Id == darbinieks.Id)
                                .FirstOrDefaultAsync();

            if (oldDarbinieks == null)
            {
                throw new BadRequestException($"Darbinieks ar Id={darbinieks.Id} netika atrasts");
            }

            oldDarbinieks.PilnsVards     = darbinieks.PilnsVards;
            oldDarbinieks.Epasts         = darbinieks.Epasts;
            oldDarbinieks.Talrunis       = darbinieks.Talrunis;
            oldDarbinieks.Aktivs         = darbinieks.Aktivs;
            oldDarbinieks.Administrators = darbinieks.Administrators;
            oldDarbinieks.Mehanikis      = darbinieks.Mehanikis;

            // ja vecajos datos nav lietotājvārda, bet jaunajos ir - nepieciešams saglabāt arī paroli
            if (string.IsNullOrEmpty(oldDarbinieks.Lietotajvards) && !string.IsNullOrEmpty(darbinieks.Lietotajvards))
            {
                oldDarbinieks.Parole = PasswordValidator.Encrypt(darbinieks.Parole, _settings.EncryptionKey);
            }
            else
            {
                // ja nav lietotājvārda - dzēšam arī paroli
                if (needClearPassword)
                {
                    oldDarbinieks.Parole         = null;
                    oldDarbinieks.Aktivs         = false;
                    oldDarbinieks.Administrators = false;
                }
            }

            oldDarbinieks.Lietotajvards = darbinieks.Lietotajvards;

            return(await _context.SaveChangesAsync());
        }