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" })); }
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); }
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" })); }
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 })); }
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 })); }
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()); }