aboutsummaryrefslogtreecommitdiffstats
path: root/server/client.erl
diff options
context:
space:
mode:
Diffstat (limited to 'server/client.erl')
-rw-r--r--server/client.erl17
1 files changed, 12 insertions, 5 deletions
diff --git a/server/client.erl b/server/client.erl
index cb6504e..d12c891 100644
--- a/server/client.erl
+++ b/server/client.erl
@@ -1,11 +1,11 @@
-module(client).
--export([start/1, loop/1, register/2, login/2]).
+-export([start/2, loop/2, register/2, login/2]).
-start(Node) ->
+start(Node, User) ->
process_flag(trap_exit, true),
Client = server:start_on_node(Node, client, undef),
link(Client),
- Server = spawn_link(client, loop, [Client]),
+ Server = spawn_link(client, loop, [Client, User]),
case server:rpc(Client, {change_state, Server}) of
{ok} ->
@@ -25,9 +25,16 @@ execute(Client, F) ->
Client ! {error, Why}
end.
-loop(Client) ->
+loop(Client, User) ->
%% mainloop for client modul in server
receive
+ {register, Name, Password} ->
+ case User of
+ {user, _, _, _, admin} ->
+ execute(Client, fun() -> cldb:register(Name, Password, none) end);
+ _ -> Client ! {error, {no_rights}}
+ end;
+
list ->
execute(Client, fun() -> media:all() end);
@@ -43,7 +50,7 @@ loop(Client) ->
Cmd ->
Client ! {error, {unknown_command, Cmd}}
end,
- loop(Client).
+ loop(Client, User).
register(Client, {Name, Password}) ->
dis ! {Client, {register, {Name, Password}}}.