aboutsummaryrefslogtreecommitdiffstats
path: root/server/client.erl
diff options
context:
space:
mode:
authorMichael Wittig <michael.wittig@fu-berlin.de>2010-10-14 17:38:47 +0200
committerMichael Wittig <michael.wittig@fu-berlin.de>2010-10-14 17:38:47 +0200
commit5697eac2876904546954e48577763713c03eb935 (patch)
tree840eb04acca1645a707039e084681e7c6bc51742 /server/client.erl
parent4741ca84bd516bcf5b65854e2661f7842599c4fc (diff)
parent05666998e1dce513f1df82353364c026f992cbb4 (diff)
downloaderlang-5697eac2876904546954e48577763713c03eb935.tar.gz
erlang-5697eac2876904546954e48577763713c03eb935.tar.xz
erlang-5697eac2876904546954e48577763713c03eb935.zip
Merge branch 'master' of ssh://git.animux.de/erlang
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}}}.