Custom Software Projects
Software Authorisation: Why a Role List Does Not Define the Whole Policy
Define software permissions through roles, records, actions and conditions, then test organisation boundaries, files, reports and access changes.

The administration panel has three roles: administrator, employee and customer. Access design appears complete until the team realises that two customers must not see each other's records. An employee may update assigned work while a supervisor approves only particular items. Role names do not explain these details. Software authorisation needs to distinguish knowing who someone is from deciding which action they may perform on which record under which conditions.
We will use a hypothetical service portal where customers create requests, employees perform work and authorised colleagues approve certain results. This is not an assessment of a particular product. The aim is to complete a role list with business rules, record relationships and test examples. Hiding a button is not a complete authorisation strategy. Technical implementation needs evaluation for the chosen environment, while business decisions should not be left for developers to infer from broad labels.
Separate identity from authority
A signed-in user does not automatically have permission to read or change every record. Authentication concerns identity; authorisation concerns the requested action. A customer may view their own request but not another customer's. The same person may have different relationships to different projects. Consider those relationships alongside role names. A functioning login screen does not establish that access rules have been implemented correctly across the rest of the application.
Discuss this through examples. Which information does a person need and which action should they not perform? Our team can see it may be too broad when colleagues have different responsibilities. Assign access for the task rather than adding unnecessary scope by default. Decide what happens when a rule has not been defined. Connect these choices to a consistent design approach so new screens and resources do not quietly appear outside the intended boundary.
Describe record, action and condition together
Access to the request module is incomplete as a requirement. Reading, creating, editing, approving, cancelling and exporting are different actions. State which records each covers. An employee might update an assigned open request while changing a closed result requires separate authority. Writing the condition with the action lets the business and developer assess the same case. The behaviour behind a broad permission checkbox becomes visible enough to discuss and test.
Time and record state can matter. Define who may change an approved document or when temporary access ends. Not every project needs a complex policy engine. Identify the variables the actual rule depends on. Excessive unused settings can make management difficult, while an overly simple role list can conceal an essential distinction. The aim is a maintainable expression of real requirements, not the largest number of configurable permissions or the smallest possible list of user types.
Establish customer and organisation boundaries
In a service used by several organisations, data ownership matters. Consider the user's workspace, the record's organisation and authority to move between them. A client-supplied identifier should not by itself establish access. Evaluate trusted application context and record relationships. Otherwise people sharing a role may gain unsuitable visibility across boundaries. Technical review needs to establish that the boundary holds wherever the relevant action can occur, rather than only within the first list a user normally sees.
Two customers with the customer role do not gain access to one another's requests. A branch or project boundary within one organisation may matter too. The business identifies which distinctions are necessary. Remember that filtering and authorisation are different. Showing a narrow list does not automatically restrict every underlying route. Apply the rule appropriately through data and services so the intended relationship survives beyond the screen arrangement and cannot be inferred merely from a visual demonstration.
Review access routes beyond the interface
Removing a button can guide users, but the server needs appropriate control over the operation. APIs, downloads, search and reports should preserve the relevant boundary. A correct screen paired with an export returning unrelated records would leave the rule incomplete. Inventory resources and actions together. Visual inspection should not be the only method. The implementation needs a dependable place for checking the decision, with other routes assessed rather than assumed to inherit protection automatically.
Files deserve attention. A document absent from a list may still have a separate access route. Define which assets are public and which depend on user or record authority. Consider generated reports similarly: on whose behalf and with what scope are they created? Evaluate both generation and later access where needed. Select a suitable technical method for the file and system. The important point is that a record's boundary should not disappear merely because its information was copied into another output.
Bulk work should preserve record-level decisions
When several records are processed together, consider each one's suitability. One valid permission does not necessarily cover the whole selection. Background work happening later may need to account for changed authority or state. These scenarios may matter differently across projects. Make the assumption explicit. A small bulk-action feature can combine several data boundaries, so design and testing should reflect its real consequences rather than treat it only as a faster version of the visible single-record button.
Connect the permission matrix to examples
A working table can describe user type, record scope, action, condition and expected result. Examples offer more clarity than generic ticks. A customer adds information to their own open request but cannot access another customer's. An employee updates assigned work without acquiring approval authority. These statements describe scope and test expectations together. Business participants can communicate requirements without specialist terminology, while developers receive a clearer basis for implementation than a list of unexplained role names.
Assign an owner to the matrix. Which records change when a new role or action appears? Separate team spreadsheets can create conflicting rules. A shared definition supports traceability. Within Custom Software Projects, connecting this work with requirements and acceptance keeps access from becoming an ambiguous setting added after development. When scope changes, authority can be assessed in the same decision process instead of being assumed to follow automatically from a new feature's existence.
Test denial as well as successful access
Opening one's own record is a positive case. Being unable to reach another user's record needs a separate test. Select incorrect roles, different organisations and unsuitable states as relevant examples. Review operations and data paths, not just visible menus. Work within an authorised test environment. The purpose is evidence that the designed boundary actually holds, rather than confidence based on a successful normal demonstration where the user already has every permission needed.
When a failure appears, examine related routes. A correction in one screen may not cover every resource. Consistent enforcement and suitable repeatable tests support maintenance. Automation can help, but correctly implementing an incorrectly described business rule still produces the wrong result. Combine business scenario review with technical testing. Make the intended behaviour and evidence understandable together, preserving test records as references for later change instead of relying entirely on the original reviewer's memory.
Manage changes throughout the access lifecycle
If a job changes, decide how earlier permissions are removed. Adding a new responsibility may preserve old access unless the process addresses it. Temporary assignments and external teams may need an ending arrangement. The method depends on the application. What matters is reviewing need after the day access is granted. Identify the rule owner and approver so the system does not accumulate authority simply because it was once appropriate for a role someone previously held.
Sessions, cached information and continuing jobs can affect when a change takes effect. Technical staff should explain the behaviour and its limits, while the business specifies which operations need prompt closure. Otherwise the panel may display a new role while another route continues under earlier information. Include relevant scenarios in testing. Access management has a lifecycle involving grant, change and closure; editing one user field is not automatically proof that every required effect has occurred.
Keep review records proportionate and useful
Significant permission changes and denied actions can support investigation. Define what is recorded, who may inspect it and how sensitive information remains protected. Do not place unnecessary customer detail or secrets into diagnostic files. The goal is enough context to understand which control acted on which operation, not indiscriminate collection. Observability helps diagnosis while creating its own access and maintenance responsibilities. Those records need the same deliberate ownership as other information produced by the application.
In our portal, creating the customer role was a beginning. Connecting it to owned records, permitted actions, files, reports and role changes creates an actual access arrangement. Ask the same questions as work expands: who can do what, to which record, under which condition and through which check? When design, implementation and tests give consistent answers, the role list becomes a usable policy. The administration screen then provides a manageable way to apply that policy rather than stand in for it.
Compare three users against one request
Review a prepared request as the customer, assigned employee and approver. The customer may add information without approving the employee's result. The employee updates work but cannot approve without authority. The approver reviews an eligible state. Repeat the assessment against another customer's example. This simple comparison reveals why record relationships and action conditions matter alongside role names. Write the expected behaviour first, so the review goes beyond counting visible buttons and checks whether each part of the policy has the intended effect.
Frequently asked questions
Is access control complete after login?
No. Authentication establishes identity while authorisation evaluates an action. A signed-in person does not necessarily have access to every record. Their own information, another user's records and separate organisations need appropriate distinctions. Demonstrate those boundaries through scenarios. A working login is not sufficient evidence that the rest of the application's permissions are correct or that every route respects the intended business relationship.
Is hiding a menu or button enough?
The interface helps users understand options, but protection should not depend only on presentation. Relevant services, data and files need appropriate enforcement. Review APIs and exports too. Information hidden in one screen should not remain available through another unintended route. Assess the implementation according to the system, with tests that examine the boundary rather than assume a visual restriction establishes it everywhere.
Does every task require another role?
It depends. Too many roles can become difficult to manage, while one broad role can conceal necessary distinctions. Consider relationships, actions and conditions together. Technical design determines which rule belongs in a role and which needs additional context. The aim is understandable enforcement of the business boundary, not increasing the number of labels or adopting the simplest list without examining its consequences.
What should permission tests cover?
Include allowed and denied examples using relevant users, organisations, actions and record states. Files and reports may require review too. Use an authorised test environment. Define expected behaviour with the business so implementation is checked against the right rule. Technical success is meaningful only when both sides agree what the user should be able to do and what should remain unavailable.
How should access change after a new assignment?
Review old authority alongside the new need. Identify approval and timing. Consider sessions and continuing work as relevant technical effects. Write the expected closure behaviour and verify it through suitable scenarios. Changing a role name does not by itself demonstrate the entire lifecycle. The application needs an arrangement that keeps permissions connected to current responsibilities rather than accumulating every access right a person has previously received.