package models

// UserSession is the cross-repo authenticated user-session contract.
type UserSession struct {
	ID             string  `json:"id"`
	Name           string  `json:"name"`
	Email          *string `json:"email,omitempty"`
	ProfileID      string  `json:"profile_id"`
	ProfileName    string  `json:"profile_name,omitempty"`
	RoleID         *string `json:"role_id,omitempty"`
	RoleName       *string `json:"role_name,omitempty"`
	IsSystemAdmin  bool    `json:"is_system_admin"`
	ConnectedAppId string  `json:"connectedAppId,omitempty"`
	Scope          string  `json:"scope,omitempty"`
	GrantType      string  `json:"grantType,omitempty"`
	SessionClass   string  `json:"sessionClass,omitempty"`
}

// ToMap converts UserSession to the formula-global map shape.
func (u *UserSession) ToMap() map[string]interface{} {
	return map[string]interface{}{
		"Id":         u.ID,
		"Name":       u.Name,
		"Email":      u.Email,
		"ProfileId":  u.ProfileID,
		"UserRoleId": u.RoleID,
	}
}
