/** * Copyright © 2016-2017 The Thingsboard Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.thingsboard.server.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.thingsboard.server.common.data.AdminSettings; import org.thingsboard.server.dao.settings.AdminSettingsService; import org.thingsboard.server.exception.ThingsboardException; import org.thingsboard.server.service.mail.MailService; import org.thingsboard.server.service.update.UpdateService; import org.thingsboard.server.service.update.model.UpdateMessage; @RestController @RequestMapping("/api/admin") public class AdminController extends BaseController { @Autowired private MailService mailService; @Autowired private AdminSettingsService adminSettingsService; @Autowired private UpdateService updateService; @PreAuthorize("hasAuthority('SYS_ADMIN')") @RequestMapping(value = "/settings/{key}", method = RequestMethod.GET) @ResponseBody public AdminSettings getAdminSettings(@PathVariable("key") String key) throws ThingsboardException { try { return checkNotNull(adminSettingsService.findAdminSettingsByKey(key)); } catch (Exception e) { throw handleException(e); } } @PreAuthorize("hasAuthority('SYS_ADMIN')") @RequestMapping(value = "/settings", method = RequestMethod.POST) @ResponseBody public AdminSettings saveAdminSettings(@RequestBody AdminSettings adminSettings) throws ThingsboardException { try { adminSettings = checkNotNull(adminSettingsService.saveAdminSettings(adminSettings)); if (adminSettings.getKey().equals("mail")) { mailService.updateMailConfiguration(); } return adminSettings; } catch (Exception e) { throw handleException(e); } } @PreAuthorize("hasAuthority('SYS_ADMIN')") @RequestMapping(value = "/settings/testMail", method = RequestMethod.POST) public void sendTestMail(@RequestBody AdminSettings adminSettings) throws ThingsboardException { try { adminSettings = checkNotNull(adminSettings); if (adminSettings.getKey().equals("mail")) { String email = getCurrentUser().getEmail(); mailService.sendTestMail(adminSettings.getJsonValue(), email); } } catch (Exception e) { throw handleException(e); } } @PreAuthorize("hasAuthority('SYS_ADMIN')") @RequestMapping(value = "/updates", method = RequestMethod.GET) @ResponseBody public UpdateMessage checkUpdates() throws ThingsboardException { try { return updateService.checkUpdates(); } catch (Exception e) { throw handleException(e); } } }