Hi,
What you are looking for is sort of per record / per group maybe permission system.
The library that we use - phpGACL - is capable of something like this, but we don't have a GUI interface for it yet. I don't have an exact time frame when we will have this feature implemented - we would love to have this access level internally as we work with freelance workers as well and it would be nice to be able to access for example only tickets that this person is assigned to.
Your question: but i don't want the freelancers to have access to anyone else's information, only the information they have entered. Is this possible? - this is somewhat what Customer user group is for, unfortunately it was designed with a little different scenario in mind - for example a Customer who can log in and change the login password, address, etc. See placed orders, tickets - but can not see the entire database.
Also if a freelancers is working with a client i already have on my database is there a way to allow them access to that account instead of have 2 of the same account on the database? - The general principle - Create a Contact and associate a login user with it. Never share login between users. epesiBIM does not impose limit on number of users, so create as many as you need and when no longer needed keep the Contact info and deactivate user (login). Once a user is created it can not be deleted only deactivated as removal could cause a situation with orphaned records (referential data integrity).
Also - never create "dummy" or "generic" users like: office1 - epesi tracks who and when created or edited record - in this case information would be useless.
I hope we will have a solution for you soon as we are contemplating an advanced permission system - editable by administrators - per module and per record assigned to User Group or an individual user (allow/deny). But this is a very complex job so please be patient.