Ejemplo n.º 1
0
        private bool SaveItem() {
            bool success = false;

            try {
                if (!SPContext.Current.Web.UserIsSiteAdmin) { // if not site collection admin, redirect to message board
                    lblMessageView.CssClass = "ms-error";
                    lblMessageView.Text = "Process Failed! <br> - You must be a site collection administrator to add an initial user to the application";
                    trMessage.Visible = true;
                }
                else {
                    if (SecurityGroupMembership.SecurityGroupMembershipActiveCount("Administrator") == 0) { // if no admins are assigned
                                                                                                            // is current user in the users table?
                        SPA.User currentUser = new SPA.User(Context.User.Identity.Name);
                        if (currentUser.ID > 0) {
                            // user exist, just assign admin role
                            SecurityGroupMembership membership = new SecurityGroupMembership();
                            membership.UserID = currentUser.ID;
                            membership.SecurityGroupID = 1;
                            if (membership.Insert()) {
                                lblMessageView.Text = "Permission Granted! <br> - Admin permissions have been granted to the existing user account";
                                trMessage.Visible = true;
                            }
                            else {
                                lblMessageView.CssClass = "ms-error";
                                lblMessageView.Text = "Permission Assignment Failed! <br> - Admin permissions could not be granted to the existing user account. Check the application exceptions";
                                trMessage.Visible = true;
                            }
                        }
                        else {
                            // user does not exist, create user record based on information from the user profile service
                            currentUser.UserName = lblAccountNameView.Text;
                            currentUser.LastName = lblLastNameView.Text;
                            currentUser.FirstName = lblFirstNameView.Text;
                            currentUser.PreferredName = lblPreferredNameView.Text;
                            currentUser.SPObjectGuid = lblUserProfileGuidView.Text;
                            currentUser.UserProfileRecordID = Int32.Parse(hfUserProfileRecordID.Value);
                            currentUser.Insert();
                            SecurityGroupMembership membership = new SecurityGroupMembership();
                            membership.UserID = currentUser.ID;
                            membership.SecurityGroupID = 1;
                            if (membership.Insert()) {
                                lblMessageView.Text = "Permission Granted! <br> - Admin permissions have been granted to the new user account";
                                trMessage.Visible = true;
                            }
                            else {
                                lblMessageView.CssClass = "ms-error";
                                lblMessageView.Text = "Permission Assignment Failed! <br> - Admin permissions could not be granted to the new user account. Check the application exceptions";
                                trMessage.Visible = true;
                            }
                        }
                    }
                    else {
                        lblMessageView.CssClass = "ms-error";
                        lblMessageView.Text = "The application already has at least one assigned administrator.  Review assignments by selecting permissions";
                        trMessage.Visible = true;
                    }
                }
            }
            catch (Exception ex) {
                SPA.Error.WriteError(ex);
                if (ShowDebug)
                    lblErrorMessage.Text = ex.ToString();
            }
            return success;
        }