Commit 3b9ff69e authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

register adminsitrator on stratup

parent 90f47f8c
......@@ -4,6 +4,12 @@ dbName: db
flagHashMethod: "MD5"
admins:
- name: "gpietrus_admin"
password: "41b450e73c974fca46911eba84e114f2" #gpietrus md5
email: "gpietrusza@gmail.com"
admin: true
teams:
- name: "misiaczki"
description: "misiaczki opis"
......
......@@ -18,12 +18,10 @@ import objects.User;
import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Morphia;
import repositories.SolutionsRepository;
import repositories.TasksRepository;
import repositories.TeamsRepository;
import repositories.UsersRepository;
import resources.*;
import java.util.List;
import java.util.stream.Stream;
/**
......@@ -66,10 +64,17 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
public void run(ApplicationConfiguration applicationConfiguration, Environment environment) throws Exception {
injector = createInjector(applicationConfiguration);
registerAdmins(applicationConfiguration);
registerResources(environment);
registerAuthFeatures(environment);
}
private void registerAdmins(ApplicationConfiguration applicationConfiguration)
{
UsersRepository usersRepository = injector.getInstance(UsersRepository.class);
applicationConfiguration.getAdmins().forEach(usersRepository::add);
}
//todo: remove
public class ExampleAuthorizer implements Authorizer<User> {
@Override
......
......@@ -4,13 +4,12 @@ import helpers.CryptoTaskConfig;
import helpers.WebTaskConfig;
import io.dropwizard.Configuration;
import objects.Team;
import objects.User;
import java.util.List;
/**
* Created by gpietrus on 16.02.16.
*/
public class ApplicationConfiguration extends Configuration {
public class ApplicationConfiguration extends Configuration
{
private String dbHost;
private int dbPort;
private String dbName;
......@@ -18,60 +17,85 @@ public class ApplicationConfiguration extends Configuration {
private List<Team> teams;
private List<CryptoTaskConfig> cryptoTasks;
private List<WebTaskConfig> webTasks;
private List<User> admins;
public List<CryptoTaskConfig> getCryptoTasks() {
public List<User> getAdmins()
{
return admins;
}
public void setAdmins(List<User> admins)
{
this.admins = admins;
}
public List<CryptoTaskConfig> getCryptoTasks()
{
return cryptoTasks;
}
public void setCryptoTasks(List<CryptoTaskConfig> cryptoTasks) {
public void setCryptoTasks(List<CryptoTaskConfig> cryptoTasks)
{
this.cryptoTasks = cryptoTasks;
}
public List<WebTaskConfig> getWebTasks() {
public List<WebTaskConfig> getWebTasks()
{
return webTasks;
}
public void setWebTasks(List<WebTaskConfig> webTasks) {
public void setWebTasks(List<WebTaskConfig> webTasks)
{
this.webTasks = webTasks;
}
public String getFlagHashMethod() {
public String getFlagHashMethod()
{
return flagHashMethod;
}
public List<Team> getTeams() {
public List<Team> getTeams()
{
return teams;
}
public void setTeams(List<Team> teams) {
public void setTeams(List<Team> teams)
{
this.teams = teams;
}
public void setFlagHashMethod(String flagHashMethod) {
public void setFlagHashMethod(String flagHashMethod)
{
this.flagHashMethod = flagHashMethod;
}
public String getDbHost() {
public String getDbHost()
{
return dbHost;
}
public void setDbHost(String dbHost) {
public void setDbHost(String dbHost)
{
this.dbHost = dbHost;
}
public int getDbPort() {
public int getDbPort()
{
return dbPort;
}
public void setDbPort(int dbPort) {
public void setDbPort(int dbPort)
{
this.dbPort = dbPort;
}
public String getDbName() {
public String getDbName()
{
return dbName;
}
public void setDbName(String dbName) {
public void setDbName(String dbName)
{
this.dbName = dbName;
}
}
......@@ -18,6 +18,7 @@ public class User implements Principal {
private String name;
private String password;
private String email;
private boolean admin = false;
@JsonCreator
public User(@JsonProperty("name") String name,
......@@ -28,6 +29,16 @@ public class User implements Principal {
this.email = email;
}
public void setAdmin(boolean admin)
{
this.admin = admin;
}
public boolean isAdmin()
{
return admin;
}
public User() {
}
......
......@@ -15,7 +15,8 @@ import java.util.List;
* Created by gpietrus on 20.02.2016.
*/
@Singleton
public class UsersRepository implements Repository {
public class UsersRepository implements Repository
{
private Datastore datastore;
private TeamsRepository teamsRepository;
......@@ -23,7 +24,8 @@ public class UsersRepository implements Repository {
@Inject
public UsersRepository(Datastore datastore,
TeamsRepository teamsRepository) {
TeamsRepository teamsRepository)
{
this.datastore = datastore;
this.teamsRepository = teamsRepository;
try {
......@@ -33,13 +35,20 @@ public class UsersRepository implements Repository {
}
}
public User getUserByName(String username) {
public void add(User user)
{
datastore.save(user);
}
public User getUserByName(String username)
{
return datastore.createQuery(User.class)
.field("name").equal(username)
.get();
}
public User authenticateUser(BasicCredentials basicCredentials) {
public User authenticateUser(BasicCredentials basicCredentials)
{
return datastore.createQuery(User.class)
.field("name").equal(basicCredentials.getUsername())
......@@ -48,12 +57,14 @@ public class UsersRepository implements Repository {
}
@Override
public List getAll() {
public List getAll()
{
return null;
}
@Override
public void initialize() {
public void initialize()
{
}
}
......@@ -41,13 +41,17 @@ public class TasksResource
//todo: make it admin endpoint, any username as parameter
//todo: admin authorization
@GET
@Path("my")
@Path("my") //todo: username as argument
public Collection<String> getUserFlags(@Auth User user) {
Map<List<String>, Integer> userFlagsHashes = tasksRepository.getUserFlagsHashes(user.getName());
if(user.isAdmin()) {
return null;
}
/*Map<List<String>, Integer> userFlagsHashes = tasksRepository.getUserFlagsHashes(user.getName());
return userFlagsHashes.entrySet()
.stream()
.flatMap(listIntegerEntry -> listIntegerEntry.getKey().stream())
.collect(Collectors.toList());
.collect(Collectors.toList());*/
return null;
}
//todo: merge with upper
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment