aboutsummaryrefslogtreecommitdiff
path: root/logged_in_p.pl
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2012-04-02 20:21:37 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2012-04-02 20:21:37 +0200
commit11c1c31584c80e2dfd4bfc4dae6a81ce3547573b (patch)
treed187460fc992789ce26326baf55e4bc4ddbc23b2 /logged_in_p.pl
Initial commit.
Diffstat (limited to 'logged_in_p.pl')
-rwxr-xr-xlogged_in_p.pl48
1 files changed, 48 insertions, 0 deletions
diff --git a/logged_in_p.pl b/logged_in_p.pl
new file mode 100755
index 0000000..a79d790
--- /dev/null
+++ b/logged_in_p.pl
@@ -0,0 +1,48 @@
+#! /usr/bin/env perl
+# Copyright 2012, Matthias Andreas Benkard <code@mail.matthias.benkard.de>.
+
+
+use common::sense;
+use Modern::Perl;
+
+use JSON;
+
+use File::Slurp;
+
+use CGI;
+use CGI::Fast;
+use CGI::Session;
+
+use Mail::ExpandAliases;
+
+
+while (my $cgi = new CGI::Fast) {
+ print $cgi->header(-content_type => 'application/json; charset=UTF-8');
+
+ my $cookie = $cgi->cookie('mulkid_session');
+ unless ($cookie) {
+ say encode_json({logged_in_p => 0});
+ exit(0);
+ }
+
+ my $session = new CGI::Session("driver:File", $cookie, {Directory=>"/tmp"});
+ unless ($session) {
+ say encode_json({logged_in_p => 0});
+ exit(0);
+ }
+
+ my $aliases = Mail::ExpandAliases->new("/etc/aliases");
+ my $email = $cgi->param('email') or die "No email address supplied";
+ my $session_user = $session->param('user');
+
+ my $alias;
+ if ($email =~ /^(.*?)@/) { $alias = $1; }
+ my $email_users = $aliases->expand($alias) or die "User not found";
+
+ if ($session_user ~~ @$email_users) {
+ say encode_json({logged_in_p => 1});
+ } else {
+ say encode_json({logged_in_p => 0});
+ }
+}
+