/** * A cool user entity */ component persistent="true" table="User" entityname="User" extends="models.BaseEntity"{ // Primary Key property name="id" fieldtype="id" column="id" generator="native" setter="false"; // Properties property name="username" ormType="string" unique="true"; property name="firstName" ormtype="string" default="" required="true"; property name="lastName" ormtype="string" default="" required="true"; property name="email" ormtype="string" required="true"; property name="password" ormtype="string" required="true"; property name="passwordResetHash" ormType="string"; property name="rememberMeHash" ormType="string"; property name="rememberMeToken" ormType="string"; property name="lastLogin" ormType="timestamp" default=""; property name="avatar" persistent="false" type="string"; property name="roles" fieldtype="many-to-many" cfc="Role" linktable="User_Role" fkcolumn="user_id" inversejoincolumn="role_id"; property name="trades" fieldtype="one-to-many" cfc="models.trades.Trade" fkcolumn="user_id" lazy="extra"; property name="defaultOffice" fieldtype="many-to-one" cfc="models.core.Office" fkcolumn="defaultOffice_id" hint="the default office a user is attached to"; // Validation this.constraints = { firstName = {required: true}, lastName = {required:true}, email = {required:true}, password = {required:true, type="email"} }; // Constructor function init(){ super.init(); variables.lastLogin = now(); variables.rememberMeHash = generateSecretKey("AES"); variables.rememberMeToken = generateSecretKey("AES"); return this; } public string function getFullName(){ return firstName & ' ' & lastName; } public string function getRolesAsList(){ if(isNull(variables.roles)){ return ''; } var roles = arrayMap(this.getRoles(), function(item,index){ return item.getName(); }); return arrayToList(roles); } }