Orkhan Hasanli
Orkhan Hasanli

Reputation: 786

Using Spring Security extras with Spring Boot in JavaFX application

I am writing a small application using the stack Spring Boot + Spring Security + JavaFX. For Integration JavaFX with Spring Boot & Spring Security I used this source from Github: https://github.com/emorgado/javafx-springboot-springsecurity

How can I use Spring Security extras (like extras for Thymeleaf) in FXML files? For example: Thymeleaf -

<li class="nav-item" sec:authorize="hasRole('ROLE_ADMIN')">
  <a class="nav-link" th:href="@{/settings}">
     <p>Settings</p>
  </a>
</li>

FXML -

<Menu mnemonicParsing="false" text="Settings">
    <MenuItem mnemonicParsing="false" onAction="#mainSettingsAction" text="Main settings" />
</Menu>

Is there any way to use attributes like sec:authorize or tags <security> in FXML file?

Upvotes: 0

Views: 493

Answers (2)

Orkhan Hasanli
Orkhan Hasanli

Reputation: 786

Many thanks to Charles Lee for help! I provide my solution to this problem:

@FXML private MenuItem settingsMenu;
    @FXML
    public void initialize(URL location, ResourceBundle resources) {

    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    Doctor currentUser = (Doctor) doctorService.findDoctorByDoctorUsername(authentication.getName());

    if(!currentUser.getRoles().contains(Role.ADMIN)) {
    settingsMenu.getParentMenu().getItems().remove(settingsMenu);
    }

    }

Upvotes: 0

Charles Lee
Charles Lee

Reputation: 371

I think you should make your own fxml compiler like e(fx)clipse FXML compiler.

but, You can use this trick.

in .fxml

<MenuItem fx:id="menuSettings" mnemonicParsing="false" onAction="#mainSettingsAction" text="Main settings" userData="ROLE_ADMIN"/>

in the controller.

@FXML private MenuItem menuSettings;

if(menuSettings != null && menuSettings.getUserData() != null) {
    if("ROLE_ADMIN".equals(menuSettings.getUserData().toString())) {
        menuSettings.getParentMenu().getItems().remove(menuSettings);
    }
}

Upvotes: 1

Related Questions