예제 #1
0
        public async Task <IActionResult> Update([FromBody] List <OtsUserDTO> users)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelStateHelpful.ModelError()));
            }
            List <string> result = new List <string>();

            foreach (var user in users)
            {
                if ((int)user.Status == (int)bp.shared.Constansts.StatusEnum.Usuniety)
                {
                    this._identContext.Users.Remove(await this._identContext.Users.FindAsync(user.UserId));
                }
                else
                {
                    await UpdateUser(user, result);
                }
            }

            _identContext.SaveChanges();

            var data = this.UsersManagementList();

            return(Ok(new { Info = result, Data = data }));
        }
예제 #2
0
        public async Task <IActionResult> GetById(int id)
        {
            var dbRes = id > 0 ? await this._companyService.CompanyQueryable().FirstOrDefaultAsync(f => f.CompanyId == id) : await this._companyService.CompanyQueryable().OrderByDescending(f => f.CompanyId).FirstOrDefaultAsync();

            if (dbRes == null)
            {
                return(BadRequest(ModelStateHelpful.ModelError("Info", $"Nie znaleziono kontrahenta o Id: {id}")));
            }


            return(Ok(this._companyService.EtDTOCompany(dbRes)));
        }
예제 #3
0
        public async Task <IActionResult> CompanyEmployeeList([FromBody] TransEuCompanyEmployeeUrlDTO url)
        {
            var link = new Uri(url.EmployeeUrl);

            var response = await this.TransEuHttpResponseMessage(HttpMethod.Get, link);

            if (response != null)
            {
                return(Ok(response));
            }

            return(BadRequest(ModelStateHelpful.ModelError(this._contextErrorHelper.ContextErrorCollection)));
        }
예제 #4
0
        public async Task <IActionResult> Loads()
        {
            // string query = @"?filter={""price_currency"":""PLN""}&sort={""creation_date"": 1}";
            string q1 = @"?sort={""creation_date"": -1}";

            var loadsUrl = new Uri("https://offers.system.trans.eu/api/rest/v1/loads" + q1);


            var response = await this.TransEuHttpResponseMessage(HttpMethod.Get, loadsUrl);

            if (response != null)
            {
                return(Ok(response));
            }
            return(BadRequest(ModelStateHelpful.ModelError(this._contextErrorHelper.ContextErrorCollection)));
        }
예제 #5
0
        public async Task <IActionResult> KontrahentById(string id)
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                return(BadRequest(ModelStateHelpful.ModelError("KontrahentId", "Przesłana wartość: kontrahentId nie może być pusta")));
            }

            var transEuKontrahentUri = new Uri("https://companies.system.trans.eu/api/rest/v1/companies/" + id);

            var response = await this.TransEuHttpResponseMessage(HttpMethod.Get, transEuKontrahentUri);

            if (response != null)
            {
                return(Ok(response));
            }
            return(BadRequest(ModelStateHelpful.ModelError(this._contextErrorHelper.ContextErrorCollection)));
        }
예제 #6
0
        public async Task <IActionResult> Register([FromBody] RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.UserName, Email = model.UserName
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme);

                    string emailBody = @"<h2>OfferTrans</h2><p>Poniżej znajduje się link aktywujący konto</p><br /><a href='" + callbackUrl + "'>Kliknij by potwierdzić konto</a></p>";
                    await _emailSender.SendEmailAsync(model.UserName, "OfferTrans - register", emailBody);

                    await _emailSender.SendEmailAsync(_config["Contact:admin"], "Rejestracja nowego użytkownika", "Zarejestrował się nowy użytkownik OfferTrans, email: " + model.UserName);

                    return(Ok(ModelStateHelpful.ModelError("Rejestracja", $"Użytkownik {model.UserName} został zarejestrowany. Należy zaktywować konto, link został wysłany e-mailem")));
                }
                else
                {
                    //AddErrors(result);
                    foreach (var err in result.Errors)
                    {
                        ModelState.TryAddModelError(err.Code, err.Description);
                    }
                    return(BadRequest(ModelState));
                }
            }

            // If we got this far, something failed, redisplay form
            return(BadRequest(ModelStateHelpful.ModelError()));
        }
예제 #7
0
        public async Task <IActionResult> GenerateToken([FromBody] LoginViewModel model)
        {
            var modelst = new ModelStateDictionary();

            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByEmailAsync(model.UserName);

                if (user != null)
                {
                    var userRoles = await _userManager.GetRolesAsync(user);

                    if (!user.EmailConfirmed)
                    {
                        return(BadRequest(ModelStateHelpful.ModelError("Login Info Error", $"Użytkownik {user.UserName} został zarejestrowany, jednak adres email: {user.Email} nie został jeszcze potwierdzony. Potwierdź adres email")));
                    }

                    if (userRoles.Count == 0)
                    {
                        var adminId      = _contextIdent.Roles.Where(w => w.Name == IdentConst.Administrator).FirstOrDefault().Id;
                        var admins       = _contextIdent.UserRoles.Where(w => w.RoleId == adminId).Select(s => s.UserId).ToList();
                        var emails       = _contextIdent.Users.WhereIn(wi => wi.Id, admins).Select(s => s.Email).ToList();
                        var adminsEmails = admins.Count == 0 ? null : String.Join(" | ", emails);
                        return(BadRequest(ModelStateHelpful.ModelError("Login Error Info", $"Konto {user.UserName} jest potwierdzone, jednak administrator nie przypisał jeszcze uprawnień. Skontaktuj się z administratorem {adminsEmails}")));
                    }

                    var result = await _signInManager.CheckPasswordSignInAsync(user, model.Password, false);

                    if (result.Succeeded)
                    {
                        var rolesId = _contextIdent.UserRoles.Where(w => w.UserId == user.Id).Select(s => s.RoleId).Distinct().ToList();
                        var roles   = await _userManager.GetRolesAsync(user);

                        var rolesPipe = rolesId.Count > 0 ? string.Join(" | ", _contextIdent.Roles.WhereIn(w => w.Id, rolesId).Select(s => s.Name).ToList()) : "brak";

                        var claims = new List <Claim>()
                        {
                            new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
                            new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                            new Claim(JwtRegisteredClaimNames.NameId, user.Id),
                        };

                        foreach (var role in roles)
                        {
                            claims.Add(new Claim("roles", role));
                        }



                        var key   = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(_config["Tokens:Key"]));
                        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

                        var token = new JwtSecurityToken(_config["Tokens:Issuer"],
                                                         _config["Tokens:Audience"],
                                                         claims,
                                                         expires: DateTime.Now.AddMinutes(120),
                                                         signingCredentials: creds);
                        return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) }));
                    }
                    else
                    {
                        //uzytkownik znaleziony jednak nie zalogowano
                        return(BadRequest(ModelStateHelpful.ModelError("Login Error Info", "Najwyraźniej hasło jest nieprawidłowe, nie udało się zalogować użytkownika")));
                    }
                }
                else
                {
                    modelst.TryAddModelError("UserLogin", $"Nie znaleziono użytkownika {model.UserName}");
                    return(BadRequest(ModelStateHelpful.ModelError("UserLogin", $"Nie znaleziono użytkownika {model.UserName}")));
                }
            }
            modelst.TryAddModelError("Model", "Przesłano nieprawidłowe dane");
            return(BadRequest(modelst));
        }