예제 #1
0
        public static void PersistFormTemplate(OpenFormGraphManager _manager, string _json)
        {
            if (_json != null)
            {
                FormTemplate jFormTemplate = JsonConvert.DeserializeObject <FormTemplate>(_json);

                FormRecord form = null;

                if (!string.IsNullOrEmpty(jFormTemplate.Guid))
                {
                    Guid guid;
                    if (Guid.TryParse(jFormTemplate.Guid, out guid))
                    {
                        form = _manager.GetFormRecord(guid);
                    }
                }

                if (form == null)
                {
                    form = new FormRecord
                    {
                        Active     = true,
                        IsTemplate = true
                    };
                }

                form.Description    = jFormTemplate.Description;
                form.FormSubject    = jFormTemplate.FormSubject;
                form.Name           = jFormTemplate.Name;
                form.SuperclassGuid = jFormTemplate.SuperclassGuid;

                _manager.Persist(form);
            }
        }
예제 #2
0
        public static List <JsonObjects.User> GetUsers(OpenFormGraphManager _manager, List <TGUser> _users)
        {
            List <JsonObjects.User> jUsers = new List <User>();

            foreach (TGUser tgUser in _users)
            {
                JsonObjects.User user = new User(tgUser);

                if (_manager.HasUserRole(user.Guid, UserRoles.UserAdmin))
                {
                    user.IsUserAdmin = true;
                }
                else
                {
                    user.IsUserAdmin = false;
                }

                if (_manager.HasUserRole(user.Guid, UserRoles.DataAdmin))
                {
                    user.IsDataAdmin = true;
                }
                else
                {
                    user.IsDataAdmin = false;
                }

                jUsers.Add(user);
            }

            return(jUsers);
        }
예제 #3
0
        public static User ValidateToken(OpenFormGraphManager _manager, Request _request)
        {
            string username = _request.Headers["Username"].First();
            string token    = _request.Headers["AuthToken"].First();

            TGUser user;

            if (_manager.ValidateUser(username, token, out user))
            {
                User result = new User(user);

                if (_manager.HasUserRole(user.Guid, UserRoles.UserAdmin))
                {
                    result.IsUserAdmin = true;
                }
                else
                {
                    result.IsUserAdmin = false;
                }

                if (_manager.HasUserRole(user.Guid, UserRoles.DataAdmin))
                {
                    result.IsDataAdmin = true;
                }
                else
                {
                    result.IsDataAdmin = false;
                }

                return(result);
            }

            return(null);
        }
예제 #4
0
        public static bool IsAuthorized(Request _request, out TGUser _user)
        {
            OpenFormGraphManager manager = new OpenFormGraphManager();

            string username  = _request.Headers["Username"].First();
            string authToken = _request.Headers["AuthorizationToken"].First();

            TGUser user = manager.GetUser(username);

            if (user != null)
            {
                TGUserAuthorization userAuth = manager.GetUserAuthorization(user.Guid, authToken);

                if (userAuth != null &&
                    !userAuth.IsExpired())
                {
                    _user = user;

                    return(true);
                }
            }

            _user = null;
            return(false);
        }
예제 #5
0
        public static string GetFormTemplate(OpenFormGraphManager _manager, Guid _formTemplateGuid)
        {
            FormRecord formRecord = _manager.GetFormRecord(_formTemplateGuid);

            if (formRecord != null)
            {
                FormTemplate jFormTemplate = new FormTemplate(formRecord);

                return(JsonConvert.SerializeObject(jFormTemplate));
            }


            return(null);
        }
예제 #6
0
        public static List <JsonObjects.FormTemplate> GetFormTemplates(OpenFormGraphManager _manager,
                                                                       List <FormRecord> _formRecords)
        {
            List <JsonObjects.FormTemplate> jFormTemplates = new List <FormTemplate>();

            foreach (FormRecord formRecord in _formRecords)
            {
                FormTemplate jFormTemplate = new FormTemplate(formRecord);
                jFormTemplates.Add(jFormTemplate);

                //Load child objects
            }

            return(jFormTemplates);
        }
예제 #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="_parameters"></param>
        /// <returns></returns>
        public string HandleUsersGet(DynamicDictionary _parameters)
        {
            OpenFormGraphManager manager = new OpenFormGraphManager();

            User jUser = AuthHelper.ValidateToken(manager, Request);

            if (jUser != null && jUser.IsUserAdmin)
            {
                List <TGUser> users = manager.GetUsers();

                List <User> jUsers = JsonHelper.GetUsers(manager, users);
                return(JsonConvert.SerializeObject(jUsers));
            }

            return("[]");
        }
예제 #8
0
        public string HandleFormTemplatesGet(DynamicDictionary _parameters)
        {
            OpenFormGraphManager manager = new OpenFormGraphManager();

            User jUser = AuthHelper.ValidateToken(manager, Request);

            if (jUser != null && jUser.IsDataAdmin)
            {
                List <FormRecord> formRecords = manager.GetTemplateFormRecords();

                List <JsonObjects.FormTemplate> formTemplates = JsonHelper.GetFormTemplates(manager, formRecords);
                return(JsonConvert.SerializeObject(formTemplates));
            }

            return(null);
        }
예제 #9
0
        public string HandleFormTemplateGet(DynamicDictionary _parameters)
        {
            OpenFormGraphManager manager = new OpenFormGraphManager();

            User jUser = AuthHelper.ValidateToken(manager, Request);

            if (jUser != null && jUser.IsDataAdmin)
            {
                Guid   formTemplateGuid;
                string guid = _parameters["guid"];
                if (Guid.TryParse(guid, out formTemplateGuid))
                {
                    return(JsonHelper.GetFormTemplate(manager, formTemplateGuid));
                }
            }

            return(null);
        }
예제 #10
0
        public string HandleFormTemplatePost(DynamicDictionary _parameters)
        {
            BaseResult result = new BaseResult {
                Result = "Failure"
            };

            OpenFormGraphManager manager = new OpenFormGraphManager();

            User jUser = AuthHelper.ValidateToken(manager, Request);

            if (jUser != null && jUser.IsDataAdmin)
            {
                string json = ReadBody();
                JsonHelper.PersistFormTemplate(manager, json);
                result.Result = "Success";
            }

            return(JsonConvert.SerializeObject(result));
        }
예제 #11
0
        public IUserIdentity GetUserFromIdentifier(Guid _identifier, NancyContext _context)
        {
            OpenFormGraphManager manager = new OpenFormGraphManager();

            TGUser user = manager.GetUser(_identifier);

            if (user != null &&
                user.IsVerified)
            {
                if (user.EulaAccepted || _context.Request.Path.Contains("signeula"))
                {
                    NancyUser nUser = new NancyUser {
                        UserName = user.Username
                    };
                    return(nUser);
                }
            }

            return(null);
        }
예제 #12
0
        public string HandleUserGet(DynamicDictionary _parameters)
        {
            OpenFormGraphManager manager = new OpenFormGraphManager();

            User jUser = AuthHelper.ValidateToken(manager, Request);

            if (jUser != null && jUser.IsUserAdmin)
            {
                string sGuid = _parameters["Guid"];
                Guid   userGuid;

                if (Guid.TryParse(sGuid, out userGuid))
                {
                    TGUser user       = manager.GetUser(userGuid);
                    User   jOtherUser = new User(user);

                    return(JsonConvert.SerializeObject(jOtherUser));
                }
            }

            return(null);
        }
예제 #13
0
        public string HandleUserAddPost(DynamicDictionary _parameters)
        {
            OpenFormGraphManager manager = new OpenFormGraphManager();
            BaseResult           result  = new BaseResult();

            User jUser = AuthHelper.ValidateToken(manager, Request);

            if (jUser != null && jUser.IsUserAdmin)
            {
                string  json     = ReadBody();
                NewUser jNewUser = JsonConvert.DeserializeObject <NewUser>(json);

                if (jNewUser != null)
                {
                    jNewUser.Guid = Guid.NewGuid();

                    TGUser testUser = manager.GetUser(jNewUser.Username);
                    if (testUser == null)
                    {
                        TGUser newUser = new TGUser
                        {
                            FamilyName   = jNewUser.LastName,
                            GivenName    = jNewUser.FirstName,
                            EmailAddress = jNewUser.EmailAddress,
                            IsVerified   = true,
                            DisplayName  = jNewUser.Username,
                            Username     = jNewUser.Username
                        };
                        manager.Persist(newUser);

                        TGUserPassword userPassword = TGUserPassword.GetNew(newUser.Guid, newUser.Username,
                                                                            jNewUser.Password);
                        manager.Persist(userPassword);

                        //Add Admin Roles as required
                        if (jNewUser.IsUserAdmin)
                        {
                            TGUserRole userAdminRole = new TGUserRole
                            {
                                Active     = true,
                                ParentGuid = newUser.Guid,
                                Name       = UserRoles.UserAdmin
                            };
                            manager.Persist(userAdminRole);
                        }

                        if (jNewUser.IsDataAdmin)
                        {
                            TGUserRole dataAdminRole = new TGUserRole
                            {
                                Active     = true,
                                ParentGuid = newUser.Guid,
                                Name       = UserRoles.DataAdmin
                            };
                            manager.Persist(dataAdminRole);
                        }

                        result.Result = "Success";
                    }
                    else
                    {
                        result.Result = "UsernameNotAvailable";
                    }
                }
            }

            return(JsonConvert.SerializeObject(result));
        }
예제 #14
0
        public static LoginResult Authorize(OpenFormGraphManager _manager,
                                            string _username, string _password, out TGUser _user)
        {
            LoginResult result = new LoginResult();

            _user = _manager.GetUser(_username);

            if (_user != null)
            {
                if (_user.Active)
                {
                    if (_manager.ValidateUser(_user, _password))
                    {
                        string token = _manager.GetAuthorizationToken(_user.Guid, _password);

                        result.Result    = "Success";
                        result.AuthToken = token;
                        result.Username  = _username;

                        if (_manager.HasUserRole(_user.Guid, UserRoles.UserAdmin))
                        {
                            result.IsUserAdmin = true;
                        }
                        else
                        {
                            result.IsUserAdmin = false;
                        }

                        if (_manager.HasUserRole(_user.Guid, UserRoles.DataAdmin))
                        {
                            result.IsDataAdmin = true;
                        }
                        else
                        {
                            result.IsDataAdmin = false;
                        }
                    }
                    else
                    {
                        //Bad password or username
                        TraceFileHelper.Warning("User not found");
                        _user = null;

                        result.Result = "BadUserOrPassword";
                    }
                }
                else
                {
                    //user not active
                    //Todo - Log Something
                    TraceFileHelper.Warning("User Not Active");
                    _user = null;

                    result.Result = "NotActive";
                }
            }
            else
            {
                //User not found
                TraceFileHelper.Warning("User not found");
                result.Result = "BadUserOrPassword";
            }

            return(result);
        }
예제 #15
0
        public static string Authorize(string _username, string _password, out TGUser _user)
        {
            LoginResult          result  = new LoginResult();
            OpenFormGraphManager manager = new OpenFormGraphManager();

            _user = manager.GetUser(_username);

            if (_user != null)
            {
                if (_user.IsVerified)
                {
                    if (_user.Active)
                    {
                        if (manager.ValidateUser(_user, _password))
                        {
                            TGUserAuthorization authorization =
                                TGUserAuthorization.GetNew(_user.Guid, "unknown");
                            manager.Persist(authorization);

                            result.Result      = "Success";
                            result.AuthToken   = authorization.AuthorizationToken;
                            result.DisplayName = _user.DisplayName;
                            result.Username    = _user.Username;
                        }

                        TGEula eula = manager.GetLatestEula();
                        if (eula != null)
                        {
                            TGEulaAgreement agreement = manager.GetEulaAgreement(_user.Guid, eula.Guid);

                            if (agreement == null)
                            {
                                result.NeedsEula = "True";
                                result.EulaGuid  = eula.Guid.ToString();
                                result.EulaText  = eula.Text;

                                _user.EulaAccepted = false;
                                manager.Persist(_user);
                            }
                            else
                            {
                                result.NeedsEula = "False";
                            }
                        }
                        else
                        {
                            //Bad password or username
                            manager.LogWarning(Guid.Empty, "User not found");
                            _user = null;

                            result.Result = "BadUserOrPassword";
                        }
                    }
                    else
                    {
                        //user not active
                        //Todo - Log Something
                        manager.LogWarning(_user.Guid, "User Not Active");
                        _user = null;

                        result.Result = "NotActive";
                    }
                }
                else
                {
                    //User not verified
                    //Todo - Log Something
                    manager.LogWarning(_user.Guid, "User not verified");
                    _user = null;

                    result.Result = "NotVerified";
                }
            }
            else
            {
                //User not found
                manager.LogWarning(Guid.Empty, "User not found");

                result.Result = "BadUserOrPassword";
            }

            return(JsonConvert.SerializeObject(result));
        }
예제 #16
0
        public AppModule()
        {
            Get["/"] = _parameters =>
            {
                return(View["index.sshtml"]);
            };

            Get["/dev/BuildDB"] = _parameters =>
            {
                bool devMode = Config.GetBooleanValue("DevMode", false);

                if (devMode)
                {
                    OpenFormGraphStructureManager structureManager = new OpenFormGraphStructureManager();
                    structureManager.BuildDB();

                    return(View["dev_dbbuildresult.sshtml"]);
                }

                return(null);
            };

            Get["/dev/BuildAdminUser"] = _parameters =>
            {
                bool devMode = Config.GetBooleanValue("DevMode", false);

                if (devMode)
                {
                    OpenFormGraphManager manager = new OpenFormGraphManager();

                    TGUser user = manager.GetUser("OFGAdmin");
                    if (user == null)
                    {
                        user = new TGUser {
                            Username = "******", GivenName = "Admin", FamilyName = "User"
                        };
                        manager.Persist(user);

                        string password = RandomString.GetRandomString(10);

                        TGUserPassword tgPassword = TGUserPassword.GetNew(user.Guid, user.Username, password);
                        manager.Persist(tgPassword);

                        TGUserRole userAdminRole = new TGUserRole
                        {
                            Active     = true,
                            Name       = UserRoles.UserAdmin,
                            ParentGuid = user.Guid
                        };
                        manager.Persist(userAdminRole);

                        TGUserRole dataAdminRole = new TGUserRole
                        {
                            Active     = true,
                            Name       = UserRoles.DataAdmin,
                            ParentGuid = user.Guid
                        };
                        manager.Persist(dataAdminRole);

                        JsonObjects.NewUser jNewUser = new NewUser(user, password);

                        return(View["dev_buildadminuserresult.sshtml", jNewUser]);
                    }
                }

                return(null);
            };
        }