public static Boolean AuthorizedAsAdministrator(HttpSessionState session)
        {
            AccountingLib.Entities.Login login = (AccountingLib.Entities.Login)session["login"];
            UserGroupEnum userGroup            = UserGroupEnum.CompanyMembers;

            if (login != null)
            {
                userGroup = (UserGroupEnum)login.userGroup;
            }

            if (userGroup == UserGroupEnum.Administrators)
            {
                return(true);
            }

            return(false);
        }
Beispiel #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            accountingMasterPage = (AccountingMasterPage)Page.Master;
            accountingMasterPage.InitializeMasterPageComponents();
            dataAccess = accountingMasterPage.dataAccess;

            if (!Authorization.AuthorizedAsAdministrator(Session))
            {
                // Mostra aviso de falta de autorização
                ShowWarning(Authorization.GetWarning());
                return;
            }

            int     loginId;
            Boolean paramExists = !String.IsNullOrEmpty(Request.QueryString["loginId"]);
            Boolean isNumeric   = int.TryParse(Request.QueryString["loginId"], out loginId);

            if ((paramExists) && (!isNumeric))
            {
                // Mostra aviso de inconsistência nos parâmetros
                ShowWarning(ArgumentBuilder.GetWarning());
                return;
            }

            loginDAO = new LoginDAO(dataAccess.GetConnection());
            if (paramExists) // Se o parametro existe é uma exclusão
            {
                loginDAO.RemoveLogin(loginId);
                Response.Redirect("ConfigLogins.aspx"); // Limpa a QueryString para evitar erros
            }

            Tenant        tenant        = (Tenant)Session["tenant"];
            List <Object> loginList     = loginDAO.GetAllLogins(tenant.id);
            int           defaultItemId = 0;

            if (loginList.Count > 0)
            {
                // Considera como sendo item default o primeiro login criado para o tenant
                AccountingLib.Entities.Login defaultItem = (AccountingLib.Entities.Login)loginList[0];
                defaultItemId = defaultItem.id;
            }

            String[] columnNames  = new String[] { "Login", "Grupo/Permissão" };
            String   alterScript  = "window.open('LoginSettings.aspx?loginId=' + {0}, 'Settings', 'width=540,height=600');";
            String   removeScript = "var confirmed = confirm('Deseja realmente excluir este login?'); if (confirmed) window.location='ConfigLogins.aspx?loginId=' + {0};";

            EditableListButton[] buttons = new EditableListButton[]
            {
                // Botões que devem aparecer para os items da lista
                new EditableListButton("Editar", alterScript, ButtonTypeEnum.Edit),
                new EditableListButton("Excluir", removeScript, ButtonTypeEnum.Remove)
            };
            EditableList editableList = new EditableList(configurationArea, columnNames, buttons);

            editableList.PreserveDefaultItem();
            foreach (AccountingLib.Entities.Login login in loginList)
            {
                UserGroupEnum userGroup = (UserGroupEnum)login.userGroup;

                String[] loginProperties = new String[]
                {
                    login.username,
                    AssociatedText.GetFieldDescription(typeof(UserGroupEnum), userGroup.ToString())
                };
                Boolean isDefaultItem = login.id == defaultItemId;
                if (!isDefaultItem)
                {
                    editableList.InsertItem(login.id, false, loginProperties);
                }
            }
            editableList.DrawList();

            // O clique do botão chama o script de alteração passando "id = 0", a tela de alteração
            // interpreta "id = 0" como "criar um novo", o id é então gerado no banco de dados.
            btnNovo.Attributes.Add("onClick", String.Format(alterScript, 0));
        }