diff --git a/routes/root.js b/routes/root.js
index 0b8947fdd7a2f9193a4c59ab4c7901a1050a54e0..ccbc5446890298a04790f959a49d7191873109ea 100644
--- a/routes/root.js
+++ b/routes/root.js
@@ -64,35 +64,98 @@ const uuidv4 = require('uuid/v4');
 router.post('/saml/SSO', passport.authenticate('saml', { failureRedirect: '/login', failureFlash: true}), function(req, res){
     const xmlResponse = req.body.SAMLResponse;
     const parser = new Saml2js(xmlResponse);
-    const userid = parser.get('email');
-
+    const response = parser.toObject();
+    const email = response["mail"];
+    console.log(parser.toJSON());
+    console.log("Nickname "+ response["givenName"])
+    const nickname = response["givenName"];
     //check, if user exists, if not create.
-
-    //else get userid and create session -> set cookie
-
-    crypto.randomBytes(48, function(ex, buf) {
-              var token = buf.toString('hex');
-
-              var session = {
-                user_id: userid,
-                token: token,
-                ip: req.ip,
-                device: "web",
-                created_at: new Date(),
-                url : "/"
-              };
-
-              db.Session.create(session)
+    db.User.findAll({where: {email: email}})
+        .then(users => {
+          if (users.length == 0) {
+            crypto.randomBytes(16, function(ex, buf) {
+                var token = buf.toString('hex');
+
+                var u = {
+                    _id: uuidv4(),
+                    email: email,
+                    account_type: "email",
+                    nickname: nickname,
+                    password_hash: "00000",
+                    prefs_language: req.i18n.locale,
+                    confirmation_token: token
+                };
+
+                db.User.create(u)
+                    .error(err => {
+                        res.sendStatus(400);
+                    })
+                    .then(u => {
+                        var homeFolder = {
+                            _id: uuidv4(),
+                            name: req.i18n.__("home"),
+                            space_type: "folder",
+                            creator_id: u._id
+                          };
+                          db.Space.create(homeFolder)
+                            .error(err => {
+                              res.sendStatus(400);
+                            })
+                            .then(homeFolder => {
+                              u.home_folder_id = homeFolder._id;
+                              u.save()
+                                .then(() => {
+                                  // home folder created,
+                                  // auto accept pending invites
+                                  db.Membership.update({
+                                    "state": "active"
+                                  }, {
+                                    where: {
+                                      "email_invited": u.email,
+                                      "state": "pending"
+                                    }
+                                  });
+                                  res.status(201).json({});
+                                })
+                                .error(err => {
+                                  res.status(400).json(err);
+                                });
+                            })
+                    });
+            });
+          }
+        }).then(user =>{
+         db.User.findOne({where: {email: email}})
                 .error(err => {
-                  console.error("Error creating Session:",err);
-                  res.redirect(500, "/");
+                  res.sendStatus(404);
                 })
-                .then(() => {
-                  var domain = (process.env.NODE_ENV == "production") ? new URL(config.get('endpoint')).hostname : req.headers.hostname;
-                  res.cookie('sdsession', token, { domain: domain, httpOnly: true });
-                  res.redirect(302, "/")
+                .then(user => {
+                    crypto.randomBytes(48, function(ex, buf) {
+                                  var token = buf.toString('hex');
+
+                                  var session = {
+                                    user_id: user._id,
+                                    token: token,
+                                    ip: req.ip,
+                                    device: "web",
+                                    created_at: new Date(),
+                                    url : "/"
+                                  };
+
+                                  db.Session.create(session)
+                                    .error(err => {
+                                      console.error("Error creating Session:",err);
+                                      res.redirect(500, "/");
+                                    })
+                                    .then(() => {
+                                      var domain = (process.env.NODE_ENV == "production") ? new URL(config.get('endpoint')).hostname : req.headers.hostname;
+                                      console.log("session set successfully");
+                                      res.cookie('sdsession', token, { domain: domain, httpOnly: true });
+                                      res.redirect(302, "/")
+                                    });
+                        });
                 });
-    });
+         });
 });
 
 router.get('/', (req, res) => {