• Как сделать имитацию платежной системы?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Соглашусь с коллегами. Однозначно есть некий тестовый аккаунт для проверки. Иногда они предоставляют не только ключ к АПИ, но и левые кредитные карты, чтобы имитировать оплату.
    Может быть, что у них в документации не написано. Свяжитесь с поддержкой
    Ответ написан
    Комментировать
  • Почему изображения отображаются только после перезагрузки Intelij Idea?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Здравствуйте!
    Вам не нужно перезапускать саму программу.
    Поступите следующим образом:

    После того, как добавите новую статику или внесете изменения в ваш проект, то для того, чтобы увидеть изменения сделайте Build project (ctrl + F9) или Rebuild Project.

    Чтобы самому не заморачиваться каждый раз нажимая на кнопку build / rebuild включите авто сборку.
    Для этого следуйте указаниям:
    1)
    SHIFT+Ctrl+A ->registry-> compiler.automake.allow.when.app.running

    2)
    file->settings->build,execution,deployment. Go to ->compiler->build project automatically.

    3) Добавьте расширение для браузера LiveReload.
    Тогда после внесения правок каждый раз будет происходить авто сборка
    https://stackoverflow.com/questions/33869606/intel...
    Ответ написан
  • Как сделать вот такую вещь на страницу как картинке в вордпрессе?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    В чем именно заключается проблема?
    Что пробовали сделать и не получилось?

    Как сделать вот такую вещь на страницу

    Если к вашей теме подключен bootstrap, то создайте 4 колонки
    Внутри кажой из колонок создайте блок и вставьте в них кнопки. А дальше просто стилизуйте.

    Если у вас не бутстрапа, то можете использовать flexbox, подключить другие css фреймворки, CSS Grid и многое другое.
    Ответ написан
  • Почему в Spring Security не работает accessDaniedHandler?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    accessDeniedHandler срабатывает только если я зологинился и пытаюсь зайти на существующую запрещенную страницу. Почему он не срабатывает если я разлогиненый и пытаюсь зайти на существующую запрещенную страницу и перекидывает на страницу логина?


    Вы сами ответили на свой же вопрос. Проходя по цепочке он сперва натыкается на проблему авторизации и выдает исключение Access Denied Exception.
    Т.е. сперва он проверяет antMatchers и видит, что запрошенный URl не указан вpermitAll(), проходя дальше по цепочке он натыкается на .anyRequest().authenticated() и отдает Access Denied Exception.

    К тому же у вас строка /error закомментирована. Возможно, что он пытается показать ошибку, но так как эта страница недоступна будучи неавторизованным, то сперва перекидывает на страницу авторизации...

    Попробуйте расскомментировать эту строку и проверьте работает ли.
    Если нет, то попробуйте создать такой контроллер:

    @Controller
    public class HttpErrorController implements ErrorController {
    
        private final MessageSource messageSource;
    
        @Autowired
        public HttpErrorController(MessageSource messageSource) {
            this.messageSource = messageSource;
        }
    
        @RequestMapping("/error")
        public String handleError(
                Locale locale,
                Model model,
                HttpServletRequest request,
                Exception ex
        ) {
    
            Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
    
            if (status != null) {
    
                int statusCode = Integer.valueOf(status.toString());
    
                Map<String, String> metaData = new HashMap<>();
    
                // 403
                if (statusCode == HttpStatus.FORBIDDEN.value()) {
    
                    //do somthing
                }
    
                // 404
                else if (statusCode == HttpStatus.NOT_FOUND.value()) {
                    //do somthing
                }
    
                // 405
                else if (statusCode == HttpStatus.NOT_FOUND.value()) {
                    //do somthing
                }
    
                // 500
                else if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) {
                    //do somthing
                }
    
            }
    
    
            return "errors/httperrors";
        }
    
        @Override
        public String getErrorPath() {
            return "/error";
        }
    
    }
    Ответ написан
  • Как соединить базу данных товаров с базой поставщиков в Woocommerce?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Я обычно, это все делаю на уровне REST API Woocommerce, а не через плагин WP All Import.
    Сооответственно, изучите
    https://woocommerce.github.io/woocommerce-rest-api...
    Ответ написан
    Комментировать
  • Почему не работает почта?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Возможные проблемы:
    1) Возможно, что сайт был перенесен некорректно. Посмотрите на наличие js ошибок в консоли браузера. Также убедитесь, что все скрипты и стили сайта загружаются корректно (исключите CORS)
    2) Возможно, что хостер, на котором сайт располагается блокирует порт. Соответственно, напишите провайдеру и пусть, сам разбирается.
    3) Иногда проблемы возникают при некорректном подключении SSL сертификата. Исключите эту проблему тоже.
    Для начала можете исключить вышеуказанные проблемы.
    Ответ написан
    Комментировать
  • Как перевести Woocommerce Admin?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    В какую папку поставили и как переводили?
    Залить нужно в папку languages плагина или же в папку wp-content/languages
    Переводить нужно pot или po файл используя poedit. Также файл должен быть корректно назван
    Ответ написан
  • Как сделать логин для админа в Spring Security?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Здравствуйте!
    Я реализовал это следующим образом:
    В данном случае у меня 2 кастомные формы входа:
    1) для админ панели /admin/login
    2) для пользователей /auth
    /**
     * Конфигурация для Spring Security
     */
    @Configuration
    @EnableWebSecurity
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    public class WebSecurityConfig {
    
        private static UserDetailsServiceImpl userDetailsService;
    
        @Autowired
        private UserDetailsServiceImpl userDetailsServiceImpl;
    
        @PostConstruct
        private void init() {
            userDetailsService = this.userDetailsServiceImpl;
        }
    
        @Bean
        public static PasswordEncoder passwordEncoder() {
            return new BCryptPasswordEncoder();
        }
    
        @Bean
        public DaoAuthenticationProvider authProvider() {
            CustomAuthenticationProvider authProvider = new CustomAuthenticationProvider();
            authProvider.setUserDetailsService(userDetailsService);
            authProvider.setPasswordEncoder(passwordEncoder());
            return authProvider;
        }
    
        // Конфигурация для backend
        @Configuration
        @Order(1)
        public static class BackendConfigurationAdapter extends WebSecurityConfigurerAdapter {
    
    
            @Autowired
            private CustomWebAuthenticationDetailsSource authenticationDetailsSource;
    
            public BackendConfigurationAdapter() {
                super();
            }
    
            @Override
            protected void configure(HttpSecurity http) throws Exception {
    
                http
                        .antMatcher("/admin/**")
                        .antMatcher("/admin/**/**")
                        .authorizeRequests()
                        .anyRequest()
                        .hasAuthority("ADMIN_PRIVILEGE")
                        /*.hasAuthority("ADMIN")*/
    
    
                        .and()
                            .formLogin()
                            .authenticationDetailsSource(authenticationDetailsSource)
                            .loginPage("/admin/login")
                            .loginProcessingUrl("/admin/login")
                            .usernameParameter("email")
                            .passwordParameter("password")
                            .defaultSuccessUrl("/admin/dashboard")
                            .failureUrl("/admin/login?authError")
                            .permitAll()
    
                        .and()
                            .rememberMe()
                            .rememberMeParameter("remember-me")
                            .tokenValiditySeconds(86400)
    
                        .and()
                            .logout()
                            .logoutRequestMatcher(new AntPathRequestMatcher("/admin/logout"))
                            .logoutSuccessUrl("/admin/login")
                            .deleteCookies("JSESSIONID")
    
                        .and()
                            .exceptionHandling()
                            .accessDeniedPage("/403")
    
                        .and()
                            .csrf()
                            .ignoringAntMatchers("/admin/**");
            }
    
            @Override
            public void configure(WebSecurity web) {
                web.ignoring().antMatchers(
    
                        // статика backend
                        "/backend/css/**",
                        "/backend/js/**",
                        "/backend/fonts/**",
                        "/backend/images/**",
                        "/backend/init/**"
    
                );
            }
    
    
            @Override
            protected void configure(AuthenticationManagerBuilder auth) throws Exception {
                auth.userDetailsService(userDetailsService);
            }
    
        }
    
    
        // Конфигурация для frontend (Обычная авторизация и авторизация oauth2)
        @Configuration
        @Order(2)
        public static class FrontendConfigurationAdapter extends WebSecurityConfigurerAdapter {
    
            @Autowired
            private CustomWebAuthenticationDetailsSource authenticationDetailsSource;
    
            public FrontendConfigurationAdapter() {
                super();
            }
    
            protected void configure(HttpSecurity http) throws Exception {
    
                http
                        .authorizeRequests().mvcMatchers("/robots.txt").permitAll()
                        .antMatchers(
                                "/", "/auth", "/signup", "/restore", "/activation/**",
                                "/admin/login", "/admin_restore",
                                "/attachments/get/**",
                                "/sendMessage",
                                "/error",
                                "/page/**",
                                "/categories", "/categories/**",
                                "/terms/**", "/posts", "/posts/**"
                        ).permitAll()
                        .anyRequest().authenticated()
    
                        .and()
                            .formLogin()
                            .authenticationDetailsSource(authenticationDetailsSource)
                            .loginPage("/auth")
                            .loginProcessingUrl("/auth")
                            .usernameParameter("email")
                            .passwordParameter("password")
                            .defaultSuccessUrl("/")
                            .failureUrl("/auth?authError")
                            .permitAll()
    
                        .and()
                            .rememberMe()
                            .rememberMeParameter("remember-me")
                            .tokenValiditySeconds(86400)
    
                        .and()
                            .oauth2Login().defaultSuccessUrl("/")
    
                        .and()
                            .logout()
                            .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                            .logoutSuccessUrl("/")
                            .deleteCookies("JSESSIONID")
    
                        .and()
                            .exceptionHandling()
                            .accessDeniedPage("/403")
    
                        .and()
                            .csrf()
    
                        .and()
                            .sessionManagement()
                            .sessionCreationPolicy(SessionCreationPolicy.ALWAYS)
    
                        .and()
                            .headers().frameOptions().sameOrigin();
                        
    
            }
    
            @Override
            public void configure(WebSecurity web) {
                web.ignoring().antMatchers(
                        "/frontend/css/**",
                        "/frontend/js/**",
                        "/frontend/fonts/**",
                        "/frontend/images/**",
                        "/frontend/lib/**",
                        "/frontend/vendor/**"
                );
            }
    
            @Override
            protected void configure(AuthenticationManagerBuilder auth) throws Exception {
                auth.userDetailsService(userDetailsService);
            }
    
    
        }
    
    }


    Админа, как по мне, лучше создать при инициализации приложения. Вот, код, как это делаю я.

    @Component
    public class InitData implements CommandLineRunner {
    
    @Override
    public void run(String... args) throws Exception {
    if (userServiceImpl.usersCount() == 0)
                initUsers();
    }
    
    private void initUsers() {
    // создаем пользователей
    }
    }
    Ответ написан
    3 комментария
  • Как с помощью recent_products вывести товары из категории?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    https://docs.woocommerce.com/document/woocommerce-...
    Используйте шорткод [products] с нужными параметрами
    Ответ написан
    Комментировать
  • Где искать php-файлы страниц сайта?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Они формируются шаблонами динамически. Посмотрите на иерархию шаблонов, чтобы понять какой шаблон за что отвечает
    https://developer.wordpress.org/themes/basics/temp...

    Можете воспользоваться плагином Query Monitor, чтобы найти шаблон для текущей страницы.
    А содержимое страниц хранится в БД
    Ответ написан
    Комментировать
  • Upload war файла в TomCat, при попытке доступа ошибка 404?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Пробовали ли вы перезапустить приложение после того, как залили war'ник ?
    Также обязательно просмотрите логи сервера.
    Исключили ли вы ошибки связанные с contextPath? Например, если у вас ссылка в шаблон добавлена хардкодом href="/contact" , то при наличии context может не работать. И соответственно, например, через thymeleaf надо добавлять как th:href="@{/contact}"
    Причины 404 могут быть разные...
    Ответ написан
    Комментировать
  • Как сделать такую контактную форму?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Конечно же есть.

    Основа - contact form 7
    https://ru.wordpress.org/plugins/contact-form-7/

    Дополнение - contact form 7 conditional fields
    https://ru.wordpress.org/plugins/cf7-conditional-f...
    Ответ написан
    Комментировать
  • Как изменить надпись "Показать все n Результаты" с каталога товаров woocommerce?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    wp-content/themes/yourtheme/woocommerce/.
    Обычно по такому пути располагаются кастомизированные шаблоны вукомерца. Если директории woocommerce у вас нет, то ее нужно создать. А дальше копируете нужные шаблоны из папки плагина wooocmmerce/templates
    Что касается смены надписи, то скорее всего сменить ее нужно на уровне файла перевода. Ищите pot или po файл плагина Woocommerce или вашей темы в папке languages
    Ответ написан
    1 комментарий
  • Как сделать товары на главной?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    У Woocommerce есть шорткоды для вывода товаров на любой странице.
    Также если вы используете виз. редакторы (например, Visual Composer), то вам доступны виджеты, которые выводят товары.
    https://docs.woocommerce.com/document/woocommerce-...
    Обратите внимание на шорткод [products]
    Ответ написан
  • Как полностью снести плагин WordPress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Полностью согласен с предыдущим ответом. В норме, плагин должен сам подчищать свои хвосты.
    Откройте БД и поищите таблицы схожие с названием плагина и удалите их.
    Ответ написан
    Комментировать
  • Не могу убрать блоки в мобильной версии?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Остаётся пустота, так как просто скрываю содержимое.

    Вам нужно при помощи медиа-запросов не только скрыть блоки (display none), но и для оставшегося блока задать 100% ширину, чтобы в моб. версии отображался полностью. Тогда не будет пустоты
    Ответ написан
  • Как частично изменить цвет текста (букв) в названии сайта на Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Частично разноцветный текст можно сделать при помощи span тегов, как вы указали в вашем вопросе. Соответственно, найти шаблон и отредактировать его. Подсказка - ищите файл header.php лого редактируется либо там, либо этот файл приведет вас куда нужно.

    Также можно реализовать при помощи js. Условно говоря после загрузки страницы найти блок выводящий лого, разделить слова в массив и применить к нему стили
    Ответ написан
    Комментировать
  • Не получается подключить spring config-server к postgresql?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Reason: Failed to determine a suitable driver class

    Тут написано, что не найден нужный драйвер для работы с БД. Хотя в yml вы явно указали драйвер.

    Вот, похожие проблемы (исключите их) -
    https://stackoverflow.com/questions/51403991/sprin...
    https://stackoverflow.com/questions/50896450/sprin...
    https://stackoverflow.com/questions/33323837/datab...

    Если вам удается подключитсья к БД из IDEA, то значит проблема не на стороне сервера. Помню, у меня когда-то была проблема с postgresql из-за отсутствия доступа к порту
    Ответ написан
  • Не получается подключить скрипт CSS?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Внимательно посмотрите на ваш скриншот, а затем на URL, который прописали в коде.

    Подсказка:
    /assets/libs/bootstrap-reboot/bootstrap-reboot.min.css

    /js/bootstrap-reboot.min.css
    Он ищет этот файл в папке js вашей темы, а вы указали, что этот файл лежит в папке assets/libx/bootstrap-reboot/
    Ответ написан
  • Кастомный плагин. Как добавить подстраницу "детальной информации" не показывая ее в меню?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Не уверен, что вы получите какой-либо ответ, в силу того, что не предоставили абсолютно никакой информации. Советую обратиться во фриланс биржу, где на платной основе вам помогут.

    Кастомный плагин

    Если это самописный плагин, то сами понимаете, что никто здесь, не будет его изучать. А так как он кастомный, то никто и не знаком с ним, чтобы вам помочь.

    Как добавить подстраницу «детальной информации» не показывая ее в меню?

    Причем тут меню, если вы на скриншоте явно обвели колонку Action какой-то таблицы. Соответственно, это не имеет никакого отношения к меню. Формулируйте вопрос точнее.

    И как сделать ссылку с главной на подстраницу?

    Также как вы выводите любую другую ссылку на главной. Копируете URL подстраницы. Вставляете на главную и все.
    Ответ написан
    Комментировать