A self hosted chat application with end-to-end encrypted messaging.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

51 lines
1.6 KiB

package org.ros.chatto.controller;
import java.security.Principal;
import java.util.Optional;
import org.ros.chatto.dto.ChatMessageDTO;
import org.ros.chatto.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Controller
@RequiredArgsConstructor
@Slf4j
public class Home {
@Autowired
private final UserService userService;
@RequestMapping("/")
public String showPage(Model model, Principal principal) {
final String welcomeMessage = Optional.ofNullable(principal).map(p -> {
return String.format("Welcome back %s!", p.getName());
}).orElse("Welcome to chatto");
model.addAttribute("message", welcomeMessage);
return "home";
}
@GetMapping("/chat")
public String showChat(Model model, Principal principal) {
model.addAttribute(new ChatMessageDTO());
Authentication authentication = SecurityContextHolder.getContext()
.getAuthentication();
boolean isAdmin = authentication.getAuthorities().stream()
.anyMatch(r -> r.getAuthority().equals("ROLE_ADMIN")
|| r.getAuthority().equals("ROLE_SUPER_USER"));
log.trace("Is admin? " + isAdmin);
model.addAttribute("activeUsers",
userService.getOtherActiveUsers(principal.getName()));
return "chat";
}
}