# User

## Content

동시 작업 기능을 지원하기 위해 SpreadJS의 **Common** 모듈은 **[UserManager](/spreadjs/api/classes/GC.Spread.Common.UserManager)** 개념을 도입하고, 사용자를 **[IUser](/spreadjs/api/interfaces/GC.Spread.Common.IUser)** 로 정의하여 사용자 관리를 용이하게 합니다. 또한 문서에 대한 사용자 접근 권한을 설정할 수 있는 구성 옵션도 제공합니다. 이 문서는 동시 작업에서 사용자와 관련된 기능을 자세히 설명합니다.

## 사용자 기능

현재 SpreadJS는 **User**와 관련하여 다음 기능을 제공합니다.

* **현재 사용자 설정:** 현재 사용자를 바인딩하여 해당 사용자의 ID를 사용
* **현재 사용자 조회:** 지정된 사용자 정보 조회
* **setPresences:** 다른 동시 작업 사용자의 Presence 상태 동기화
* **getPresences:** 현재 Presence 정보 조회

### 현재 사용자 설정

**[GC.Spread.Common.UserManager.current](/spreadjs/api/classes/GC.Spread.Common.UserManager#current)** 메서드는 사용자를 현재 환경에 바인딩하여 해당 사용자의 ID를 사용할 수 있도록 합니다.

```typescript
const loginUserId = 'userID1';
GC.Spread.Common.UserManager.current(loginUserId);
```

**설명**: **[UserManager.current](/spreadjs/api/classes/GC.Spread.Common.UserManager#current)** 메서드를 호출하면 현재 환경에서 활성 사용자로 설정됩니다. 이 작업은 다중 사용자 동시 작업 편집 시나리오에서 사용자의 식별자를 결정합니다. 바인딩 이후에는 사용자의 **id**, **name**, **color** 속성을 사용하여 작업의 출처를 구분하거나 UI에서 사용자 상태를 표시할 수 있습니다.

### 현재 사용자 조회

**[GC.Spread.Common.UserManager.get](/spreadjs/api/classes/GC.Spread.Common.UserManager#get)** 메서드는 사용자 ID를 기준으로 지정된 사용자 정보를 가져옵니다. **UserManager.current** 메서드와 함께 사용하면 현재 활성화된 사용자의 정보를 조회할 수 있습니다.

```auto
const currentUserID = GC.Spread.Common.UserManager.current();
const currentUserInfo = await GC.Spread.Common.UserManager.get(currentUserID);
```

### setPresences / getPresences

[setPresences](/spreadjs/api/classes/GC.Spread.Sheets.Collaboration.Collaboration#setpresences) / [getPresences](/spreadjs/api/classes/GC.Spread.Sheets.Collaboration.Collaboration#getpresences) 메서드는 주로 다중 사용자 동시 작업 환경에서 다른 사용자의 실시간 Presence 상태(예: 커서 위치, 선택 영역)를 표시하는 데 사용됩니다.
자세한 내용은 [Presence](/spreadjs/docs/spreadjs-collaboration-server/spreadjs-sheets-collaboration/user/presence)를 참고하십시오.