diff --git a/lib/cyberman/Domains.pm b/lib/cyberman/Domains.pm index 5d4c8e7..ab5829c 100644 --- a/lib/cyberman/Domains.pm +++ b/lib/cyberman/Domains.pm @@ -20,4 +20,55 @@ get '/domains' => sub { } }; +post '/domains/new' => sub { + my %errs; + + if (!param("name")) { + $errs{"e_no_name"} = 1; + } + + my $name = lc param("name"); + + if (scalar(keys(%errs)) == 0) { + if (param("name") !~ m/^[a-z0-9]([a-z0-9\-_]*[a-z0-9])?$/) { + $errs{"e_chars"} = 1; + } + } + + if (scalar(keys(%errs)) == 0) { + my $result = database->quick_select( + "domain", + { + "name" => param("name"), + }, + ); + + if ($result) { + $errs{"e_exists"} = 1; + } + } + + if (scalar(keys(%errs)) != 0) { + return template 'domains/new' => { + params, + %errs, + error => 1, + }; + } + + # TODO: send domains to nsd + + database->quick_insert( + "domain", + { + "name" => $name, + "ownerid" => vars->{"auth"}, + }, + ); + + template 'redir' => { + "redir" => "../domains", + }; +}; + true; diff --git a/views/domains.tt b/views/domains.tt index e1f57c5..d9645ce 100644 --- a/views/domains.tt +++ b/views/domains.tt @@ -5,6 +5,10 @@