Commit Graph

289 Commits

Author SHA1 Message Date
Philipp Holzer 90248f6bb7
Move .well-known, webfinger, xrd to src/Module/ 2019-05-01 18:25:04 +02:00
Philipp Holzer 6056081d5a
Move mod/nodeinfo to src/Module/Nodeinfo 2019-04-22 14:00:17 +02:00
Michael 6fd8b5f365 Don't send single item delete commands to protocols that support account removal 2019-02-11 20:30:08 +00:00
Michael 633d04049b Lower priority for removing users 2019-02-03 23:55:46 +00:00
Hypolite Petovan 504945f9df Improve page flags doc block in Model\User 2019-01-21 11:12:53 -05:00
Hypolite Petovan 3d839bb176 Move Contact::ACCOUNT_TYPE_* constants to User::ACCOUNT_TYPE_*
- Keep Contact::TYPE_* constants for comparison with contact.contact-type
2019-01-21 10:56:27 -05:00
Hypolite Petovan ad9c67663d Move Contact::Page_* constants to User::PAGE_FLAGS_* 2019-01-21 10:55:37 -05:00
Hypolite Petovan 4a95ca280d Remove unused code
- Remove commented code
- Remove unused/immediately overwritten variables
- Remove extraneous parameters
- Remove unreachable code
- Remove duplicate array keys
2019-01-21 10:48:40 -05:00
Hypolite Petovan cb3f09ae4f Refactor namespaces
- Remove unused use statements
- Add required use statements
- Escape global classes
2019-01-21 10:43:42 -05:00
Hypolite Petovan 070aa016e0 Update more PHPDoc, including in include/ 2019-01-21 10:39:28 -05:00
Hypolite Petovan 3282ce5389 Fix PHPDoc comments project-wide 2019-01-21 10:35:51 -05:00
Hypolite Petovan 55e54bb950 Replace deprecated Addon::callHooks with Hook::callAll
- Update documentation
2019-01-21 09:50:56 -05:00
fabrixxm 8c75c26361 Use Model\Photo as much as possible
Most important is to use `Photo::delete()` to have backend
to remove data.
2019-01-21 09:12:28 -05:00
Tobias Diekershoff 6bc865ff4d
Merge pull request #6356 from MrPetovan/task/6355-add-password-rules
Add password rules
2019-01-10 10:37:32 +01:00
Hypolite Petovan e447375cdd
Merge branch '2019.01-rc' into bug/6334-escape-get-app 2019-01-06 16:38:48 -05:00
Hypolite Petovan 5e1ceb57de Escape global namespaced get_app() calls
- Add deprecated status
2019-01-03 21:27:36 -05:00
Hypolite Petovan e86b8ef782 Use nickname instead of email for Login Name 2019-01-03 20:42:29 -05:00
Hypolite Petovan 58adb5b431 Add password checks in User::updatePassword 2019-01-01 01:15:51 -05:00
Hypolite Petovan 909c9d0309 Increase auto-generated passwords to 12 chars + leading capital 2019-01-01 01:14:45 -05:00
Hypolite Petovan 961f737f36 Use User::updatePasswordHashed directly when re-hashing a password 2019-01-01 01:14:44 -05:00
Hypolite Petovan acaee626f5 Remove include/ requires that are now done directly from Composer 2018-12-24 09:56:25 -05:00
Michael faa30adf68 Handles issue 6122 - the self contact will be updated when it seems to be invalid 2018-12-22 20:12:32 +00:00
Hypolite Petovan 458981f75c Replace x() by isset(), !empty() or defaults()
- Remove extraneous parentheses around empty() calls
- Remove duplicate calls to intval(), count() or strlen() after empty()
- Replace ternary operators outputting binary value with empty() return value
- Rewrite defaults() without x()
2018-11-30 09:06:22 -05:00
Hypolite Petovan 92556e5161 Fix user account removal expiration delay 2018-11-24 20:59:18 -05:00
Hypolite Petovan 54f4ac6ae0 Remove redirection from User::remove 2018-11-24 20:58:41 -05:00
Hypolite Petovan 0dd120bb06 Normalize quotes in User::remove 2018-11-24 20:58:11 -05:00
Hypolite Petovan 0bae80a2d3 Update deprecated calls in Model\user and mod/removeme 2018-11-24 20:56:38 -05:00
Hypolite Petovan 9d2f474c07 Fix open registration email 2018-11-24 20:55:18 -05:00
Adam Magness 218f0734be Rename removeTags to escapeTags
rename function and update calls.
2018-11-09 13:29:42 -05:00
Adam Magness e4354a0d7b Update and Remove isValidEmail
change function calls, and remove unneeded function.
2018-11-09 13:18:42 -05:00
Adam Magness ffc406d819 normalise_link calls
implement normaliseLink function
2018-11-08 11:28:29 -05:00
Adam Magness 5276c28a78 link_compare calls
implement compareLink function.
2018-11-08 10:46:50 -05:00
Adam Magness b73af72deb deindent calls
implement function in new class
2018-11-08 10:26:49 -05:00
Adam Magness b99925060a autoname calls
implement getRandomName function
2018-11-08 10:22:20 -05:00
Adam Magness a0f65ca7a1 notags calls
implement removeTags function
2018-11-08 10:14:37 -05:00
Philipp Holzer 8ad721988b
Refactoring identities to Model\User::identities 2018-11-08 00:38:55 +01:00
Adam Magness 50da89d861 Logger Levels
update logger levels in calls
2018-10-30 09:58:45 -04:00
Adam Magness 14fde5dc9b Log function
implement log() function.
2018-10-30 09:57:14 -04:00
vinzv cb75c40f4e adapted profile pic resize to 300px for whole system 2018-10-23 16:36:57 +02:00
Philipp Holzer d00ddc01af
Split goaway to System::externalRedirectTo() and App->internalRedirect() 2018-10-22 22:13:35 +02:00
Philipp Holzer 2ef81108b3
Renamed System::redirect() to $a->redirect() 2018-10-22 22:13:22 +02:00
Hypolite Petovan 4ec56a0975 Sets maximum to 64 for username_min/max_length config keys 2018-10-21 17:28:40 -04:00
Hypolite Petovan c1bca43fee Changing default/max values for username_min/max_length
- Restoring legacy default values (3 and 48 respectively)
- Lowering the max value to 150 to take the full profile URL length into
account
2018-10-21 15:10:51 -04:00
Hypolite Petovan b08408c086 Add safeguard for username_min|max_length mutual exclusion 2018-10-21 08:28:24 -04:00
Hypolite Petovan d360bf926a Use username_min/max_length config keys in Model\User::create 2018-10-20 16:33:54 -04:00
Benjamin Lorteau d9209b9c7a Use local temporary directory for PasswordExposedChecker cache 2018-10-19 11:26:48 -04:00
Hypolite Petovan 18763e32af
Remove superfluous L10n::t() parameter in Model\user 2018-10-18 18:22:48 -04:00
Benjamin Lorteau 9e1065ff87 Improve transition from previous behavior
- Simplify Model\User methods parameter list
- Use DBA methods in mod/regmod
- Replace killme with exit in mod/regmod
- Simplify goaway() calls
2018-10-15 11:58:52 -04:00
Hypolite Petovan 540adaf829 Use Model\Register methods in modules
- Update registration emails to avoid storing the plaintext password in
the register table
- Remove redundant sprintf() when used with L10n::t()
- Remove redundant Systen::baseUrl() with goaway()
2018-10-14 12:26:18 -04:00
Hypolite Petovan 123992384b Create Model\Register
- Add Model\User::exists method
2018-10-14 11:34:34 -04:00
Hypolite Petovan 7f143c3159 Fix various spelling mistakes 2018-10-14 11:32:54 -04:00
Philipp Holzer 5a02e39a65
Rename App Methods
- renamed a lot of App methods to CamelCase
- replaced direct public variables with get-/set-Methods
2018-10-10 00:16:06 +02:00
Michael da79566125 Relocated function 2018-09-28 03:56:41 +00:00
Michael cb9be8a7ab UUID is now createUUID 2018-09-27 11:52:15 +00:00
Michael 60b0759b50 UUID instead of GUID 2018-09-26 20:03:46 +00:00
Michael Vogel c7f8f190b9 Oh no, even more notices ... (#5697) 2018-08-29 14:28:13 -04:00
Michael Vogel 49dad00570 Issue 5260: Ensure that user data is really deleted (#5666)
* Issue 5260: Ensure that user data is really deleted

* Missing files
2018-08-25 17:48:50 -04:00
Roland Häder 61693419e8 Cleanups: isResult() more used, readability improved (#5608)
* [diaspora]: Maybe SimpleXMLElement is the right type-hint?

* Changes proposed + pre-renaming:
- pre-renamed $db -> $connection
- added TODOs for not allowing bad method invocations (there is a
  BadMethodCallException in SPL)

* If no record is found, below $r[0] will fail with a E_NOTICE and the code
doesn't behave as expected.

* Ops, one more left ...

* Continued:
- added documentation for Contact::updateSslPolicy() method
- added type-hint for $contact of same method
- empty lines added + TODO where the bug origins that $item has no element 'body'

* Added empty lines for better readability

* Cleaned up:
- no more x() (deprecated) usage but empty() instead
- fixed mixing of space/tab indending
- merged else/if block goether in elseif() (lesser nested code blocks)

* Re-fixed DBM -> DBA switch

* Fixes/rewrites:
- use empty()/isset() instead of deprecated x()
- merged 2 nested if() blocks into one
- avoided nested if() block inside else block by rewriting it to elseif()
- $contact_id is an integer, let's test on > 0 here
- added a lot spaces and some empty lines for better readability

* Rewrite:
- moved all CONTACT_* constants from boot.php to Contact class

* CR request:
- renamed Contact::CONTACT_IS_* -> Contact::* ;-)

* Rewrites:
- moved PAGE_* to Friendica\Model\Profile class
- fixed mixure with "Contact::* rewrite"

* Ops, one still there (return is no function)

* Rewrite to Proxy class:
- introduced new Friendica\Network\Proxy class for in exchange of proxy_*()
  functions
- moved also all PROXY_* constants there as Proxy::*
- removed now no longer needed mod/proxy.php loading as composer's auto-load
  will do this for us
- renamed those proxy_*() functions to better names:
  + proxy_init()           -> Proxy::init()         (public)
  + proxy_url()            -> Proxy::proxifyUrl()   (public)
  + proxy_parse_html()     -> Proxy::proxifyHtml()  (public)
  + proxy_is_local_image() -> Proxy::isLocalImage() (private)
  + proxy_parse_query()    -> Proxy::parseQuery()   (private)
  + proxy_img_cb()         -> Proxy::replaceUrl()   (private)

* CR request:
- moved all PAGE_* constants to Friendica\Model\Contact class
- fixed all references of both classes

* Ops, need to set $a here ...

* CR request:
- moved Proxy class to Friendica\Module
- extended BaseModule

* Ops, no need for own instance of $a when self::getApp() is around.

* Proxy-rewrite:
- proxy_url() and proxy_parse_html() are both non-module functions (now
  methods)
- so they must be splitted into a seperate class
- also the SIZE_* and DEFAULT_TIME constants are both not relevant to module

* No instances from utility classes

* Fixed error:
- proxify*() is now located in `Friendica\Util\ProxyUtils`

* Moved back to original place, ops? How did they move here? Well, it was not
intended by me.

* Removed duplicate (left-over from split) constants and static array. Thank to
MrPetovan finding it.

* Renamed ProxyUtils -> Proxy and aliased it back to ProxyUtils.

* Rewrite:
- stopped using deprecated NETWORK_* constants, now Protocol::* should be used
- still left them intact for slow/lazy developers ...

* Ops, was added accidentally ...

* Ops, why these wrong moves?

* Ops, one to much (thanks to MrPetovan)

* Ops, wrong moving ...

* moved back to original place ...

* spaces added

* empty lines add for better readability.

* convertered spaces -> tab for code indenting.

* CR request: Add space between if and brace.

* CR requests fixed + move reverted
- ops, src/Module/*.php has been moved to src/Network/ accidentally
- reverted some parts in src/Database/DBA.php as pointed out by Annando
- removed internal TODO items
- added some spaces for better readability
2018-08-24 01:05:49 -04:00
Michael Vogel 7f3fb34c24 Some easy to replace "q" calls have been replaced by "DBA" calls (#5632)
* Some easy to replace "q" calls have been replaced by "DBA" calls

* Simplified the GUID creation

* And one in the API ...

* And OStatus has got some DBA calls more

* Just some more replaced database calls

* The event query is now simplified

* Events are now shown again

* subthread is now using the DBA calls as well

* Some more replaced database calls

* And some more replaced database calls and prevented notices

* Better use gravity

* Some more replaced database stuff

* Some more replaced database calls in DFRN.php

* The gcontact class now has got the new DBA functions as well

* The Contact class is now changed to new database functions as well

* Small correction

* We can now delete without cascade

* One more functionality is safe for future changes
2018-08-19 12:46:10 +00:00
Roland Häder e06fc2aa69 Stopped using deprecated constants NETWORK_* (#5537)
* Rewrite:
- stopped using deprecated NETWORK_* constants, now Protocol::* should be used
- still left them intact for slow/lazy developers ...

* Removed deprecated NETWORK_* constants as per code reviewer's request.
2018-08-11 22:40:44 +02:00
Michael 170dd2a705 Some more removed notices 2018-08-10 19:39:43 +00:00
Michael Vogel c72c64a6d8 Notices again (#5543)
* And again notices

* Notices in the directory

* Much more places

* Fix some double $

* Notice in ping

* Missing field

* Fix: We now remove deleted users from the directory

* Some more stuff

* Notices when removing users

* Added logging

* More logging

* Two more
2018-08-02 07:21:01 +02:00
Hypolite Petovan ecea7425f8 Rename DBA::is_result to DBA::isResult 2018-07-23 11:04:14 -04:00
Hypolite Petovan 0ec44f3e8a Rename DBM method calls to DBA method calls 2018-07-23 11:02:24 -04:00
Michael Vogel 2d0a749734
Merge pull request #5431 from MrPetovan/task/5410-rename-database-methods
Move DBA to src/ part 3.1: Rename DBA methods
2018-07-23 15:18:58 +02:00
Roland Häder 4eb6707dc9 Cleanup: (#5463)
- rewrote x() to empty() as it is deprecated
- fixed indending for some entries
2018-07-22 21:18:21 -04:00
Hypolite Petovan f051ae1698 Rename DBA::fetch_first to DBA::fetchFirst 2018-07-22 19:27:34 -04:00
Hypolite Petovan af6dbc654f Rename Friendica\Database\dba to Friendica\Database\DBA 2018-07-20 08:19:26 -04:00
Hypolite Petovan daa1177e3a Update use statement lists with new Friendica\Database\dba class
- Remove unused use statement
- Remove superfluous use statements (classes in the same namespace)
- Add missing use statements
2018-07-19 22:15:21 -04:00
Hypolite Petovan 762a786611 Replace direct accesses to App->config by Config::get/set calls 2018-07-16 19:38:16 -04:00
Tobias Diekershoff a49e094308 added forgotten trim 2018-07-06 15:49:27 +02:00
Tobias Diekershoff 72638acac3 admins can forbid some nicknames from being registered 2018-07-06 15:32:56 +02:00
Michael 962fbc9166 Many "fetch_first" had been replaced 2018-06-19 21:33:07 +00:00
Michael 4714cb746b Use the item functions at many more places 2018-06-18 20:36:34 +00:00
Tobias Diekershoff 9ea6d4b26d the detected language was not stored during user creation 2018-05-31 08:27:27 +02:00
Roland Häder 6129eb1623
OpenId possibly fixed:
- The LightOpenId class' constructor now requires the hostname from where the
  requested started, added it now
- sometimes need to invoke get_app() as $a was not around

Signed-off-by: Roland Häder <roland@mxchange.org>
2018-05-17 00:24:25 +02:00
Hypolite Petovan 0496822ca3 Add Exception when password is empty in User::hashPassword() 2018-04-19 07:51:26 -04:00
Alexandre Alapetite 360e2e6342 Revert removal of legacy_password column
https://github.com/friendica/friendica/pull/4782#issuecomment-380978218
2018-04-15 11:12:32 +02:00
Alexandre Alapetite 991a3d959e Revert "Remove SQL column legacy_password"
This reverts commit 82f1f2f00e.
2018-04-15 10:51:22 +02:00
Alexandre Alapetite e860cdf6a8 Swap if / elseif
https://github.com/friendica/friendica/pull/4782#discussion_r179947984
2018-04-08 16:02:25 +02:00
Alexandre Alapetite 82f1f2f00e Remove SQL column legacy_password 2018-04-08 14:53:12 +02:00
Alexandre Alapetite cb26cd6d5d Remove legacy_password test 2018-04-08 14:42:18 +02:00
Alexandre Alapetite 129f6806f6 Fix update password rehash
Fixes https://github.com/friendica/friendica/issues/4743
The logic for updating password was wrong:
b0a764b14c (diff-1466bb1a0a37fe9f7cf52eda8f3b431aR150)
2018-04-08 12:40:35 +02:00
Michael 1e8dd96938 Fix: The register mail contained variables in a wrong order 2018-04-04 19:56:34 +00:00
Tobias Diekershoff 6cef0fbaeb added link to delete the account to the registration mail text 2018-04-02 18:40:52 +02:00
Hypolite Petovan 27d94023ee Merge branch 'master' into develop 2018-03-23 06:15:55 -04:00
Hypolite Petovan 701fd41463 Rename checkPasswordExposed to isPasswordExposed 2018-03-21 02:14:43 -04:00
Hypolite Petovan ca13570251 Add exposed password check to manual password change 2018-03-21 01:33:35 -04:00
Michael cd79ce3a57 Fix: Multiple accounts per mail address are allowed when not explicit forbidden 2018-03-04 22:23:52 +00:00
Michael a3af6807ac Improved resource id creation 2018-02-20 10:02:07 +00:00
Hypolite Petovan d419d07f73 [Scrutinizer] Fix undeclared variables in src/ (except Protocol/)
- Use dba::selectFirst to remove intermediate variables `$r`
- Remove unused variable `$url_recipients` in Worker\Dellivery
2018-02-14 00:05:00 -05:00
Hypolite Petovan 8a9917857e Handle authentication exceptions in Login module
- Break down large methods into smaller ones
- Add more authentication exception
- Add a legacy User::authenticate method
2018-02-09 00:08:01 -05:00
Hypolite Petovan 5e7285b9ba Move Temporal::convert() to DateTimeFormat::convert() 2018-02-03 08:56:55 -05:00
Hypolite Petovan 8aff8a76eb Add Temporal::utcNow() 2018-02-03 08:56:52 -05:00
Hypolite Petovan dc366bf1f7 Refactor datetime_convert into Temporal::convert
- Changed parameter order to save space
- Refactor select_timezone into Temporal::getTimezoneSelect
- Refactor field_timezone into Temporal::getTimezoneField
2018-02-03 08:56:51 -05:00
Hypolite Petovan 236616995b Remove references to library/openid 2018-01-27 18:28:04 -05:00
Adam Magness f04d40a37e Review update
Rename function, move others
2018-01-27 11:13:41 -05:00
Adam Magness 0f1be37279 Remove old file
remove network.php and all require_once statements
2018-01-27 08:28:20 -05:00
Adam Magness 1eb7c19c1e Move multiple functions
move multiple smaller functions
2018-01-26 23:51:41 -05:00
Adam Magness c67452f72e Move fetch_url
move fetch_url function
2018-01-26 23:09:48 -05:00
Hypolite Petovan 9cd3b17743 Fix translation strings for use with util/extract.php
- Change parentheses to “\x28” and “\x29”
- Remove leading commas
- Remove quotes before commas
2018-01-24 16:51:32 -05:00
Adam Magness 208a149a7b Review sprintf
remove more sprintf calls
2018-01-23 21:59:16 -05:00
Adam Magness b4d0df18c5 Remove old file and requires
Remove pgettext.php and remove require_once calls
2018-01-22 18:03:26 -05:00
Adam Magness 07d306aa37 Finish t() for src
Update t() calls in src folder
2018-01-22 18:03:26 -05:00
Hypolite Petovan b0a764b14c Use password_hash() for passwords
- Use legacy_password to update double-hashed passwords
2018-01-20 22:29:03 -05:00
Hypolite Petovan 0888f51b4b Add password reset request expiration
- Change password reset link to /lostpass/[pwdreset]
2018-01-20 18:15:55 -05:00
Hypolite Petovan 209c43ebbc Centralize password hashing in Model\User 2018-01-20 17:32:24 -05:00
Adam Magness b86b04a81a Change plugin to addon
change the use of plugin to addon where appropriate.
2018-01-20 07:48:22 -05:00
Adam Magness 6c4c567319 Remove require
remove require_once for plugins.php
2018-01-20 07:48:22 -05:00
Adam Magness 11cf36105c Update Addon functions and calls
Update function names and calls for Addon class.
2018-01-20 07:48:22 -05:00
Hypolite Petovan e36f2bb1fb Use short form array syntax everywhere
- Add short form array syntax to po2php.php generation
2018-01-15 14:07:17 -05:00
Hypolite Petovan ae66bcaff3 Rename selectOne to selectFirst 2018-01-10 12:57:21 -05:00
Hypolite Petovan da60893590 Replace dba::select(limit => 1) by dba::selectOne
- Convert array declarations to new style
2018-01-10 12:57:21 -05:00
Hypolite Petovan 9a3e773a9a Merge branch 'develop' into task/3954-move-auth-to-src 2018-01-02 19:30:41 -05:00
Adam Magness 9e6bf79380 Crypto to src
move Crypto to src and Friendica\Util namespace
2017-12-30 11:51:49 -05:00
Hypolite Petovan 1724dd3841 Make validate_url more intuitive
- Remove the parameter passed by reference
- Add modified url in return value
2017-12-29 21:55:13 -05:00
Michael bd66eefe68 Fix for PR 4095 2017-12-18 09:21:47 +00:00
Hypolite Petovan df02238659 Centralize owner data fetch 2017-12-17 16:22:39 -05:00
Hypolite Petovan 10b72b0e9e PHPStan: Fix missing requires/namespaces 2017-12-17 15:26:43 -05:00
Hypolite Petovan d500d06a06 Fix User::create return variable 2017-12-15 20:47:10 -05:00
Hypolite Petovan fbf57ac98b Replace q() by dba function in User
- Add relevant Exceptions
- Fix admin email checking
2017-12-12 21:07:03 -05:00
Hypolite Petovan ac3642e76f Add Exceptions to User::create 2017-12-12 20:43:21 -05:00
Hypolite Petovan 4fe8dab08d Remove include/group.php 2017-12-09 13:45:54 -05:00
Hypolite Petovan abdecd2b2f Use new Model methods for groups 2017-12-09 13:45:17 -05:00
Hypolite Petovan fe89e7760e Fix formatting all around 2017-12-09 13:42:02 -05:00
Hypolite Petovan 669c7dea59 Add new method from include/group in relevant Model classes 2017-12-09 13:31:00 -05:00
Hypolite Petovan a42595a30c Move Object\Contact to Model\Contact 2017-12-07 23:56:12 -05:00
Hypolite Petovan 3fc3e67b70 Separate Object\Photo into Model\Photo and Object\Image
- Renamed a bunch of functions to shorter or clearer names
2017-12-07 23:54:51 -05:00
Michael Vogel 5747cfc79c
Revert "Move Objects to Model" 2017-12-08 05:21:51 +01:00
Hypolite Petovan 18d93cddf6 Move Object\Contact to Model\Contact 2017-12-07 09:04:24 -05:00
Hypolite Petovan 52bddd580c Separate Object\Photo into Model\Photo and Object\Image
- Renamed a bunch of functions to shorter or clearer names
2017-12-07 08:56:11 -05:00
Hypolite Petovan b0dcfc2724 Add class methods derived from include/user functions
- Add User::create
- Add User::sendRegisterPendingEmail
- Add User::sendRegisterOpenEmail
- Add Contact::createSelfFromUserId
2017-12-03 22:27:49 -05:00
Hypolite Petovan 4395c20679 Fix formatting and add documentation
- mod/register
- mod/regmod
- Model/User
- Worker/CronJobs
2017-12-03 22:15:31 -05:00
Hypolite Petovan ced1063a10 Improved dba calls
- Removed intval calls
- Used boolean values for params when relevant
2017-11-27 08:17:56 -05:00
Hypolite Petovan 9ddb81ce5f Fix function name typo 2017-11-26 15:51:07 -05:00
Hypolite Petovan 2196a0577b Remove unused upubkey and uprvkey from queries
- Switched queries to new dba::* functions
2017-11-26 14:55:47 -05:00
Hypolite Petovan 483603e77c Add User::authenticate() 2017-11-26 14:25:25 -05:00
Adam Magness 1eb2e541f6 New from rebase
more adjustments after rebase
2017-11-20 11:14:35 -05:00
Hypolite Petovan b92fc24ff0 Add Contact Object
- Add Profile Object
- Add User Model
- Add use statements
2017-11-19 16:55:28 -05:00