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

register adminsitrator on stratup

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